4.4 配置slave从库(192.168.52.130)
Slave的配置与master库类似,如下所示:
Vim /etc/my.cnf #------------------Master-Slaveconfig----------------- log-slave-updates=1 replicate-same-server-id=0 server-id=230 # Server ID log-bin=/home/data/mysql/binlog/mysql-bin.log relay-log=mysql-relay-bin master-info-repository=TABLE relay-log-info-repository=TABLE binlog-ignore-db=mysql # No sync databases binlog-ignore-db=test # No sync databases binlog-ignore-db=information_schema # No sync databases binlog-ignore-db=performance_schema binlog-do-db=user_db expire-logs-days=10 max_binlog_size = 10485760
server_id 是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置 bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。
配置玩,重启slave数据库
mysql> show slave status; Empty set (0.05 sec) mysql>
没有记录,需要设置一些主从配置。
4.5 设置主从连接复制
生成CHANGE MASTER语句,然后在从上执行,master信息,从备份集合里面获取:
xtrabackup备份的话,从xtrabackup_binlog_info里面获取,如下所示:
[root@data02 tmp]#tar -xvfbackup_slave.tar.gz [root@data02 tmp]#cd backup_slave [root@data02 backup_slave]# morextrabackup_binlog_info mysql-bin.000141 120 [root@data02 backup_slave]#
Mysqldump的啊,从sql文件的头几列获取,如下所示:
[root@data02 tmp]#cd /tmp/ [root@data02 tmp]#gunzip alldb.sql.gz [root@data02 tmp]# more alldb.sql |grep"CHANGE MASTER TO MASTER_LOG_FILE" |grep "MASTER_LOG_POS"|more -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000141',MASTER_LOG_POS=120;
生成changemaster语句,如下:
CHANGE MASTER TO MASTER_HOST='192.168.52.129',
MASTER_USER='repl',
MASTER_PASSWORD='repl_1234',
MASTER_LOG_FILE='mysql-bin.000141',
MASTER_LOG_POS=120;
有报错信息:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.52.129',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='repl_1234',
-> MASTER_LOG_FILE='mysql-bin.000141',
-> MASTER_LOG_POS=120;
ERROR 1794 (HY000): Slave is not configuredor failed to initialize properly. You must at least set --server-id to enableeither a master or a slave. Additional error messages can be found in the MySQLerror log.
mysql>
具体原因目前不详,网上查找到的资料:数据库打开这几张表的默认引擎为MyISAM,但是这几张表在建表时的引擎为INNODB
但是能确定的,这几张表确实是在mysql5.6中新入的
innodb_index_stats,
innodb_tables_stats,
slave_master_info,
slave_relay_log_info,
slave_worker_info
解决方法:
登录数据库,进入mysql库,执行如下SQL删除5张表
记住,一定要是drop table if