时间:2021-07-01 10:21:17 帮助过:3人阅读
mysql replication官方中文文档
准备工作:
1.保证Master/Slave两台主机上mysql的版本一致,避免不必要的麻烦。
2.保证Master/Slave能够互相ping通,能够通信。
Master主机IP:192.168.1.1
Slave主机IP:192.168.1.2
配置my.ini:
Master - my.ini
在[mysqld]下添加:
log-bin = mysql-bin #因为MYSQL是基于二进制的日志来做同步的,每个日志文件大小为 1G
server-id = 1 #主标服务标识号,必需唯一
binlog-do-db = db_user #要同步的库名
binlog-do-db = db_topic
binlog-ignore-db=mysql,test #不记录日志的库,即不需要同步的库
Slave - my.ini
在[mysqld]下添加:
server-id = 2
log-bin = mysql-bin #如果不做双向同步则slave机不需要写二进制日志的
log-slave-updates
master-host = 192.168.1.1
master-user = slave #Slave主机访问Master的用户名
master-password = 123456 #Slave主机访问Master的密码
master-port = 3306
replicate-ignore-db = mysql #不同步的数据库
replicate-do-db = db_user #要同步的数据库
replicate-do-db = db_topic
重启Master和Slave
#net stop mysql
#net start mysql
mysql>show master status;#查看my.ini是否配置成功
创建帐号 (Slave访问Master)
mysql>grant replication slave,reload,super,select on *.* to slave@’%’ identified by ‘123456′;
mysql>flush privileges;
备份Master主机的数据库(db_user,db_topic)
#如果表结构都是MyISAM,可以直接copy文件
mysql> flush tables with read lock; #加锁,禁止写操作
mysql> mysqldump -uroot -proot -P3306 –databases db_user db_topic > backdb.sql
将Master的数据导入到Slave
如果所有的数据库表结构都是MyISAM
mysql>load data from master;
否则
mysql -uroot -proot < backdb.sql
停止Slave
mysql>stop slave;
告诉 slave 当前 master 的值
mysql> change master to master_host=’192.168.1.1′,master_user=’slave’,master_password=’123456′,master_port=3306,master_log_file=’mysql-bin.000001′,master_log_pos=98;
mysql> start slave; #开始同步
检测 Slave 状态
mysql> show slave status/G;
#最重要的三个字段为以下值时成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
返回到Master机
mysql> unlock tables; #解锁
至此 Master/Slave 应该配置好了,
你可以试试在Master的db_user添加一条记录,Slave中也可以select到