mysql主主复制
1. 修改my.cnf:
主机A
[mysqld]
#标识唯一id(必须) server-id=1 #开启二进制日志 log-bin=mysql-bin #不同步的数据库,可设置多个 binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=mysql binlog-ignore-db=sys #指定需要同步的数据库(和slave是相互匹配的),可以设置多个 #binlog-do-db=test #主-主形式需要多添加的部分 log-slave-updates #sync_binlog = 1 auto_increment_offset = 1 auto_increment_increment = 2 replicate-ignore-db = mysql,information_schema,performance_schema,sys #设置存储模式不设置默认 binlog_format=MIXED #日志清理时间 expire_logs_days=7 #日志大小 max_binlog_size=100m #缓存大小 binlog_cache_size=4m #最大缓存大小 max_binlog_cache_size=521m
主机B
[mysqld]
#标识唯一id(必须) server-id=2 #开启二进制日志 log-bin=mysql-bin #不同步的数据库,可设置多个 binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=mysql binlog-ignore-db=sys #指定需要同步的数据库(和slave是相互匹配的),可以设置多个 #binlog-do-db=test #主-主形式需要多添加的部分 log-slave-updates #sync_binlog = 1 auto_increment_offset = 2 auto_increment_increment = 2 replicate-ignore-db = mysql,information_schema,performance_schema,sys #设置存储模式不设置默认 binlog_format=MIXED #日志清理时间 expire_logs_days=7 #日志大小 max_binlog_size=100m #缓存大小 binlog_cache_size=4m #最大缓存大小 max_binlog_cache_size=521m
2. 重启mysql,
2.1 配置MasterA主 ==》 MasterB主
mysql> grant replication slave on *.* to 'repl'@'192.199.162.15' identified by '123456'; mysql> flush privileges; #刷新权限 mysql> SHOW MASTER STATUS; +------------------+----------+--------------+-------------------------------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+-------------------------------------------------+-------------------+ | mysql-bin.000007 | 613 | | information_schema,performance_schema,mysql,sys | | +------------------+----------+--------------+-------------------------------------------------+-------------------+ #File、Position 在配置从机时需要用到 #MasterB 从机配置 mysql> change master to master_host='192.199.162.37', master_user='repl', master_port=3307, master_password='123456', master_log_file='mysql-bin.000007', master_log_pos=613; #启动slave同步进程: mysql> start slave; #查看slave状态: mysql> show slave status\G;
2.2配置masterB主 ==》 masterA从
mysql> grant replication slave on *.* to 'repl'@'192.199.162.37' identified by '123456'; mysql> flush privileges; #刷新权限 mysql> SHOW MASTER STATUS; +------------------+----------+--------------+-------------------------------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+-------------------------------------------------+-------------------+ | mysql-bin.000004 | 613 | | information_schema,performance_schema,mysql,sys | | +------------------+----------+--------------+-------------------------------------------------+-------------------+ #File、Position 在配置从机时需要用到 #MasterA从机配置 mysql> change master to master_host='192.199.162.15', master_user='repl', master_password='123456', master_log_file='mysql-bin.000004', master_log_pos=613; #启动slave同步进程: mysql> start slave; #查看slave状态: mysql> show slave status\G;
3. 配置成功,查看slave状态:
#当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了 mysql> show slave status\G;
4. 正确关闭mysql以及slave服务步骤
关闭MySQL从库 1. 先查看当前的主从同步状态show slave status\G;看是否双yes 2. 分别执行stop slave,停止从库线程 3. 停止从库服务mysqladmin shutdown -u用户名 -p密码 4. 查看是否还有mysql的进程ps -ef | grep mysql 5. 如果部署了多个实例,那每个实例都要按照以上步骤来操作 关闭MySQL主库 1. 停止主库服务mysqladmin shutdown -u用户名 -p密码 2. 查看是否还有mysql的进程ps -ef | grep mysql
5. 正确启动主从服务步骤
启动MySQL主库 1. 启动主库服务mysqladmin start -u用户名 -p密码 2. 查看mysql的进程ps -ef | grep mysql 启动MySQL从库 1. 启动从库服务mysqladmin start -u用户名 -p密码 2. 分别启动复制start slave; 3. 检查同步状态show slave status\G;是否双yes 4. 查看mysql的进程ps -ef | grep mysql
Q&A:
1. Slave_SQL_Running: No
1.1 先停掉两台的slave
1.2 登录masterA查看master
show master status;
1.3 登录masterB
stop slave;
change master to master_host='127.0.0.1',
master_port=3308,
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000003',
master_log_pos=154;
start slave;
show slave status\G
确认双Yes
1.4 登录masterA,执行1.3步骤