Tag Archives: slave

Mysql 主从设置

最近刚好有人问到Mysql主从库怎么配置,想想干脆写篇文章,也方便以后使用。
Mysql设置主从后可以缓解数据库的读取压力,将读表操作分散到从库进行。

首先我们假设:
主库(Master): 10.10.1.10
从库(Slave): 10.10.1.11 从库可以多台,但是需要考虑主从之间的传输速度

 

主库配置

首先修改 my.cof

vim /etc/my.cof

保证配置文件中有以下语句
server-id = 1    //master端ID号
log-bin = /usr/local/mysql/data/mysql-bin    //日志路径及文件名

以下语句按照需要配置
binlog-do-db = data    //需要同步的数据库(通过多行添加多个,如果没有次行,就是同步不允许以外所有的库)
binlog-ignore-db = mysql    //不需要同步的数据库(通过多行添加多个)
binlog-ignore-db = information_schema
//以上配置都是通过use table实现的,如果你使用database.table可能会存在问题;
//比如你忽略mysql库,但是你在data库中运行 UPDATE mysql.table SET xxx 词句依然不会被忽略

添加从库同步帐号权限,以及查看主库状态

mysql -uroot -p
mysql> GRANT REPLICATION SLAVE ON *.* TO '<slave_username>'@'<slave_ip>' IDENTIFIED BY '<slave_password>';
mysql> FLUSH PRIVILEGES;
mysql> SHOW MASTER STATUS; //查看主库日志状态

 

从库设置

首先修改 my.cof

vim /etc/my.cof

保证配置文件中有以下语句
server-id = 2    //slave端ID号,保证比master端ID大

添加从库同步帐号权限,以及查看主库状态

mysql -uroot -p
mysql> CHANGE MASTER TO
MASTER_HOST='<master_host>',
MASTER_USER='<master_username>',
MASTER_PASSWORD='<master_password>',
MASTER_LOG_FILE='<log_file>', //同步的起始日志文件名称
MASTER_LOG_POS='<log_position>'; //同步的起始Position
mysql> START SLAVE; //开始同步
mysql> SHOW SLAVE STATUS \G //查看从库状态

 

注意

1、如果您的主库日志文件一直存在就直接将起始日志文件定位到第一个日志的第一个位置就可以。
2、如果您的主库日志不完整,按请先锁定主库,然后将主数据库导入从数据库中。
3、一旦开始主从同步切勿使用“RESET MASER”来清除主库日志。

 

附:将主库文件备份到从库

锁定主库

mysql -uroot -p
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS; //将信息记录下来,要在从库配置中使用到

备份数据库文件

rsync -var /usr/local/mysql/data/ 10.10.1.11:/usr/local/mysql/data/

解锁主库

mysql -uroot -p
mysql> UNLOCK TABLES;

然后配置从库

 

附:删除主库日志

Mysql命令删除

mysql -uroot -p
mysql> SHOW BINARY LOGS;
mysql> PURGE BINARY LOGS TO 'mysql-bin.000003'; //上面取出的文件名称

Rm命令删除

cd /usr/local/mysql/data/
rm -f mysql-bin.000001
rm -f mysql-bin.000002
//切勿删除最后一个日志文件