在主从复制的基础上操作,主从复制的搭建可以参考:
1、在slave数据库创建同步账户
mysql> grant replication slave on *.* to 'slave2'@'%' identified by 'Aa123456.';
mysql> flush privileges;
2、修改slave数据库的配置
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
user=mysql
skip_name_resolve
port=3306
#允许最大的连接进程数
max_connections=500
#日志时间同步本地时间
log_timestamps = SYSTEM
#错误日志
log_error=/data/mysql/logs/mysql_err.log
#二进制日志
server_id=02
log_bin=/data/mysql/binlogs/mysql-bin-slave
binlog_format= mixed
binlog_cache_size=32m
max_binlog_cache_size=64m
max_binlog_size=10m #单个文件最大值
expire_logs_days = 10 #过期时间,0为不清理
read-only=0 #1代表只读,0代表读写
#忽略同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
replicate-ignore-db=information_schema #复制时需要排除的数据库
replicate-ignore-db=mysql #复制时需要排除的数据库
replicate-ignore-db=performance_schema #复制时需要排除的数据库
replicate-ignore-db=sys #复制时需要排除的数据库
# 作为从库时 更新操作是否写入日志 on:写入 其他数据库以此数据库做主库时才能进行同步
log-slave-updates=on
#记录中继日志
relay_log=/data/mysql/relaylogs/mysqld-relay-slave-bin
auto-increment-increment = 2
auto-increment-offset = 2
3、修改master数据库的配置
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
user=mysql
skip_name_resolve
port=3306
#允许最大的连接进程数
max_connections=500
#日志时间同步本地时间
log_timestamps = SYSTEM
#错误日志
log_error=/data/mysql/logs/mysql_err.log
#二进制日志
server_id=01
log_bin=/data/mysql/binlogs/mysql-bin-master
binlog_format= mixed
binlog_cache_size=32m
max_binlog_cache_size=64m
max_binlog_size=10m #单个文件最大值
expire_logs_days = 10 #过期时间,0为不清理
read-only=0 #1代表只读,0代表读写
#忽略同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
# 作为从库时 更新操作是否写入日志 on:写入 其他数据库以此数据库做主库时才能进行同步
log-slave-updates=on
#记录中继日志
relay_log=/data/mysql/relaylogs/mysqld-relay-master-bin
auto-increment-increment = 2
auto-increment-offset = 1
4、查看两台MySQL的status
5、在master开启从节点
mysql> change master to master_host='192.168.7.71',master_user='slave2',master_password='Aa123456.',master_port=3306,master_log_file='mysql-bin-slave.000002',master_log_pos=154;
mysql> start slave;
mysql> show slave status\G
#查看到Slave_IO_Running: Yes和Slave_SQL_Running: Yes,即可
#出现ERROR 29 (HY000): File '/data/mysql/relaylogs/mysqld-relay-master-bin.index' not found (Errcode: 13 - Permission denied),原因是没有创建该目录
[root@docker mysql]# mkdir relaylogs
[root@docker mysql]# chown mysql:mysql relaylogs/
6、slave数据库重新开启从节点
#清理同步设置
mysql> reset slave;
mysql>change master to master_host='192.168.7.67',master_user='slave',master_password='Aa123456.',master_port=3306,master_log_file='mysql-bin-master.000002',master_log_pos=154;
mysql> start slave;
mysql> show slave status\G
#查看到Slave_IO_Running: Yes和Slave_SQL_Running: Yes,即可
#出现ERROR 29 (HY000): File '/data/mysql/relaylogs/mysqld-relay-master-bin.index' not found (Errcode: 13 - Permission denied),原因是没有创建该目录
[root@docker mysql]# mkdir relaylogs
[root@docker mysql]# chown mysql:mysql relaylogs/
7、验证主主复制
在slave数据库创建一个test数据库
在master数据库查看现有数据库