Centos 下 Mysql 双向同步配置
一,环境
Master:Centos
Ip:172.16.100.5
Slave:Centos
Ip:172.16.100.6
根据安装方法的不同,数据库相关路径也不太一致,
YUM安装数据库存放路径/var/lib/mysql,
数据库配置文件路径/usr/share/mysql,
数据库相关命令/usr/bin.
1,查看主库服务器/usr/share/mysql目录下的cnf文件
/usr/share/mysql/*.cnf
.cnf配置参考:
My-small.cnf 内存少于或等于64M,只提供很少数据库服务
My-medium.cnf 内存在32M-64M之间而且和其他服务一起使用,如web
My-large.cnf 内存在512M主要提供数据库服务
My-huge.cnf 内存在1G-2G,主要提供数据库服务
My-innodb-heavy-4G.cnf 内存有4G,主要提供较大负载数据库服务(一般服务器使用这个)
2,复制文件到/etc下并更名为my.cnf
# cp /usr/share/mysql/my-innodb-heavy-4G.cnf /etc/my.cnf
二;
Master端
1,进入mysql,创建一个数据库testdb;
Mysql>create database testdb;
2,创建一个用来同步的用户,指定只能在172.26.100.6登录;
Mysql>grant replication slave on *.* to 'testdb'@'172.26.100.6' identified by '123456';
3,打开my.cnf,并添加如下字段
# vi /etc/my.cnf
Server-id = 1
Log-bin = log
Binlog-do-db = testdb //需要同步的数据库,如果没有本行,即表示同步所有数据库
Master-host = 172.16.100.6
Master-user = testdb
Master-password = 123456
Master-port = 3306
Master-connect-retry = 10
Replicate-do-db = testdb //需要接收的数据库,如有多个数据库,每个数据库一行
4,重启master机的mysql服务
Service mysqld restart
5,进入mysql,执行
Mysql>slave start;
三,
Slave端
1,进入mysql,创建一个数据库testdb
Mysql>create database testdb;
2,创建一个用来同步的用户,指定只能在172.26.100.5登录
Mysql>grant replication slave on *.* to 'testdb'@'172.26.100.5' identified by '123456';
3,打开my.cnf,并添加如下字段
# vi /etc/my.cnf
Server-id = 2
Log-bin = log
Binlog-do-db = testdb
Master-host = 172.26.100.5
Master-user = testdb
Master-password = 123456
Master-port = 3306
Master-connect-retry = 10
Replcate-do-db = testdb //需要接收的数据库,如有多个数据库,每个数据库一行
4,然后重启slave机的mysql
Service mysqld restart
5,在slaves机中进入mysql
Mysql>start slave;
四;
数据同步;
1,双向同步就是把单向同步反过来走一遍。
在master服务器上进入mysql
mysql> show master status;
+------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------+----------+--------------+------------------+
| log.000011 | 4514237 | testdb | mysql |
+------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记录下log.000011 和4514237
2,在slave服务器上执行
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
3,输入如下命令:
mysql> change master to
-> master_host = '172.26.100.5',
-> master_user = 'testdb',
-> master_password = '123456',
-> master_log_file = 'log.000011',
-> master_log_pos = 4514237;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave; //开始同步
Query OK, 0 rows affected (0.00 sec)
4、在slave服务器上进入mysql,查看数据。
mysql> show master status;
+------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------+----------+--------------+------------------+
| log.000001 | 4502348 | testdb | |
+------------+----------+--------------+------------------+
1 row in set (0.00 sec)
记录下log.000001 和4502348
5、在master服务器上执行
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
6,输入如下命令:
mysql> change master to
-> master_host = '172.26.100.6',
-> master_user = 'testdb',
-> master_password = '123456',
-> master_log_file = 'log.000001',
-> master_log_pos = 4502348;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave; //开始同步
Query OK, 0 rows affected (0.00 sec)
五;测试。
mysql> slave processlist \G;
Slave_IO_Running 和 Slave_SQL_Running 都为 yes,表示配置成功。