---------------------------------------+-------------------+
| mysql-bin.000151 | 120 | user_db |mysql,test,information_schema,performance_schema | |
+------------------+----------+--------------+--------------------------------------------------+-------------------+
1 row in set (0.00 sec)
mysql>
mysql> show master status\G;
*************************** 1. row***************************
File: mysql-bin.000151
Position: 120
Binlog_Do_DB: user_db
Binlog_Ignore_DB:mysql,test,information_schema,performance_schema
Executed_Gtid_Set:
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>
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