准备条件
- 2个同版本数据库。
- MASTER :192.168.1.66
- SLAVE:192.168.1.99
- 测试数据库名称test_db
1. 配置MASTER 服务器
1.1 打开Mysql bin-log
在my.ini中做如下配置
- [mysqld]
- default-storage-engine=INNODB
- log-bin=mysql-bin
- server-id=1
- innodb_flush_log_at_trx_commit=1
- sync_binlog=1
- binlog-do-db=test_db #被复制的数据库
重启数据库
1.2 创建一个用户为复制数据库连接用户
- CREATE USER 'repl'@'%' IDENTIFIED BY 'repl';
- GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
- FLUSH PRIVILEGES;
1.3 锁表操作
执行
- FLUSH TABLES WITH READ LOCK;
执行后不要关闭当前执行界面。关闭后锁表操作将会失效。
1.4 dump数据库
执行
- mysqldump --databases test_db >testdb.db -u root -p
1.5 查看主库状态
执行并记录状态
- show master status;
需要记住File、Position字段后就可以把MASTER只读状态关闭了。
1.6 MASTER只读解锁
执行
- UNLOCK TABLES;
2. 配置SLAVE 服务器
2.1导入数据库到SLAVE服务器
- mysql < testdb.db -u root -p
2.2 在my.ini中做如下配置
- [mysqld]
- default-storage-engine=INNODB
- server-id=2
重启SLAVE
2.3设置同步记录
执行
- CHANGE MASTER TO
- MASTER_HOST='192.168.1.66',
- MASTER_USER='repl',
- MASTER_PASSWORD='repl',
- MASTER_LOG_FILE='mysql-bin.000001',
- MASTER_LOG_POS=154;
2.4启动SLAVE 同步
执行
- START SLAVE;
2.5查看SLAVE 是否成功
TIPS:从库不要进行写入操作否则会导致,主从不一致 或主从复制失败。