/**************** MySQL主从同步配置记录 (5.1.17及以上版本) ********************/
主库上创建mybackup用户,该用户将作为主备库数据同步用户
[root@test ~]# mysql -u root -p
mysql> grant replication slave on *.* to 'mybackup'@'192.168.20.137' identified by 'work123';
修改主库的配置文件
[root@test ~]# vi /etc/my.cnf
server-id=1 #指定数据库服务器ID
log_bin=mysql-bin #启用二进制日志系统
binlog-do-db=mydb1 #指定要做同步的数据库
binlog-do-db=mydb2
binlog-ignore-db=mysql #指定不用做同步的数据库
重启主库,查看配置信息
[root@test ~]# /etc/init.d/mysql restart
[root@test ~]# mysql -u root -p
mysql> show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
... ... ... ...
其中File和Position的值要注意,是备库配置时所需要的信息
修改备库的配置文件
[root@test ~]# vi /etc/my.cnf
server-id=2 #备库数据库服务器ID
log_bin=mysql-bin #启用二进制日志系统
replicate-do-db=mydb1 #设置做同步的数据库
replicate-do-db=mydb2
replicate-ignore-db=mysql #设置不做同步的数据库
重启备库使配置生效
[root@test ~]# /etc/init.d/mysql restart
配置数据库信息
[root@test ~]# mysql -u root -p
mysql> stop slave; #关闭同步进程
mysql> change master to master_host='192.168.20.163',master_user='mysync',master_password='work123',master_log_file='File' ,master_log_pos=Position; #配置同步信息
mysql> slave start; #开启同步进程
复制要同步的数据库到备库
如有必要,备份主库之前,将数据库改为只读模式,防止备份期间有数据的写入,备份完成后再解锁
mysql> flush tables with read lock;
mysql> unlock tables;
导出要同步的两个数据库,并复制至备库服务器
[root@test ~]# mysqldump -u root -p mydb1 > /home/mydb1.sql
[root@test ~]# mysqldump -u root -p mydb2 > /home/mydb2.sql
[root@test ~]# scp /home/mydb1.sql 192.168.20.137:/home/
[root@test ~]# scp /home/mydb2.sql 192.168.20.137:/home/
备库上创建数据库并导入数据
[root@test ~]# create database mydb1;
[root@test ~]# create database mydb2;
[root@test ~]# use mydb1;
[root@test ~]# source /home/mydb1.sql
[root@test ~]# use mydb2;
[root@test ~]# source /home/mydb2.sql
验证
备库上查看同步信息
mysql> SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
该两个参数为Yes视为成功
还需主库操作数据,验证备库同步情况。
--------------------------------------分割线 --------------------------------------
Ubuntu下Nginx做负载实现高性能WEB服务器5---MySQL主主同步
MySQL主从失败 错误Got fatal error 1236
--------------------------------------分割线 --------------------------------------