mysql主从复制实现数据库同步html
master Mysql(主数据库) : 192.168.211.128mysql
slave Mysql(从数据库) : 192.168.211.130sql
# 测试使用数据库 CREATE SCHEMA `user` DEFAULT CHARACTER SET utf8 ; use user; CREATE TABLE `user`.`user` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `user`.`user` (`id`, `name`) VALUES ('1', '张三'); INSERT INTO `user`.`user` (`id`, `name`) VALUES ('2', '李四');
grant replication slave on *.* to 'repl'@'192.168.211.130' identified by 'repl'; flush privileges;
# server标识 server-id=107 # 指定二进制日志存储地址,必须使用绝对地址 log-bin=/var/lib/mysql/mysql-bin #须要备份的数据库名,能够重复设置 binlog-do-db=user # 不须要备份的数据库名,能够重复设置 binlog-ignore-db=mysql # 这个参数必定要加上,不然不会给更新记录到二进制文件里 log-slave-updates=1 # 是跳过错误,继续执行复制操做 slave-skip-errors=1
systemctl restart mysqld.service
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 768 | user | mysql | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.01 sec)
# server标识 server-id=109
systemctl restart mysqld.service
mysql> change master to -> master_host='192.168.211.128', -> master_user='repl', -> master_password='repl', -> master_log_file='mysql-bin.000001', -> master_log_pos=154; Query OK, 0 rows affected, 2 warnings (0.05 sec)
mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_Running: Yes Slave_SQL_Running: Yes
上面的查询结果不少,可是只要看上面连个参数是YES就能够了,若是是NO,就从新配置 2.3 的步骤。数据库
能够先到主数据库上看一下master和slave线程的状态,在mater上能够看到slave的I/O线程建立的连接bash
mysql> show processlist\G; *************************** 1. row *************************** Id: 2 User: root Host: localhost db: NULL Command: Query Time: 0 State: starting Info: show processlist *************************** 2. row *************************** Id: 3 User: repl Host: 192.168.211.130:47617 db: NULL Command: Binlog Dump Time: 71 State: Master has sent all binlog to slave; waiting for more updates Info: NULL 2 rows in set (0.00 sec)
先在主数据库上插入数据,ide
INSERT INTO `user`.`user` (`id`, `name`) VALUES ('3', '王五');
再到从数据库查询测试
mysql> SELECT * FROM user.user; +----+------+ | id | name | +----+------+ | 1 | 张三 | | 2 | 李四 | | 3 | 王五 | +----+------+ 3 rows in set (0.01 sec)