两台
服务器A:192.168.1.1
B:192.168.1.2
A(master)作为主
服务器 为 B(slave)提供同步服务。
www.atcpu.com 关闭A,B
服务器的数据库,将
服务器A的
数据库导出至B
服务器上,保证A,B
服务器上要同步的
数据库结构相同;
1、修改A
服务器的配置文件my.cnf(win
服务器为 my.ini)
#skip-networking #注释掉 因为它是屏蔽掉一切TCP/IP连接
server-id=1
log-bin
binlog-do-db=backup_db #提供数据同步服务的
数据库set-variable=binlog-ignore-db=mysql #不记录
数据库mysql的更新日志
2、在A
服务器上增加一个账号专门用于同步,如下:
# /usr/local/mysql/bin/mysql -h192.168.1.1 -uroot -p*****
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO name@192.168.1.2 IDENTIFIED BY 'pw';
3、在B
服务器, 修改配置文件my.cnf(win
服务器为 my.ini)
server-id=2 #不能与A配置相同
master-host=192.168.1.1 #主机A的地址
master-user=name #主机A提供给B的用户,该用户中需要包括
数据库backup_db的权限
master-pass
word=pw #访问密码
www.atcpu.com master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
set-variable=replicate-ignore-db=mysql #略过同步的
数据库名,如果有多个,请设置多次
set-variable=replicate-do-db=backup_db #想要同步的
数据库名,如果有多个,请设置多次
4、在Slave上检验一下是否能正确连接到Master上,并且具备相应的权限。
# /usr/local/mysql/bin/mysql -h192.168.1.1 -uname -ppw
mysql>SHOW GRANTS;
+----------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for name@192.168.1.2 |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'name@192.168.1.2' IDENTIFIED BY PASS
word '*4498909FB5F32638296EFBA1886F56599F142787' |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.53 sec)
mysql>
5、启动Slave,登录Slave,查看一下同步状态:
# mysql -uroot
www.atcpu.com mysql>SHOW SLAVE STATUS\G
看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
配置成功,在A
服务器上添加一条数据,看看B是不是同步过来了!