两个mysql数据库之间的主从同步

 

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', '李四');

一、主数据库的操做

1.一、建立一个从数据库复制主数据库使用的帐号,拥有 replication slave 权限。

grant replication slave on *.* to 'repl'@'192.168.211.130' identified by 'repl';
flush privileges;

1.二、修改mysql配置文件 /etc/my.cnf 

# 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

1.三、重启mysqld服务,并获取binlog日志文件名和偏移量(position)<这写参数会在从数据库配置时用到>

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)

二、从数据库配置

2.一、修改从数据库的配置文件 /etc/my.cnf 

# server标识
server-id=109

2.二、重启服务

systemctl restart mysqld.service

2.三、配置从数据库的复制帐号和密码等参数

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)

2.四、查看配置结果

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)
相关文章
相关标签/搜索