首先在两个服务器上创建两个数据库
数据库 | ip地址 | 操作系统 | 数据库版本 |
---|
mysql主数据库 | 192.168.183.140 | centos7 | 5.7 | mysql从数据库 | 192.168.183.139 | centos7 | 5.7 |
需要关闭selinux,防火墙,并清空Iptables规则。
- MySQL Replication,可以实现将数据从一台库服务器( master)复制到一 台或多台数据库服务器 (slave)。
- 默认情况下属于异步复制,无需维持长连接,通过配置,可以复制所有的库或者几个甚至中一些表,这个功能是 MySQL 内建的,本身自带的。
复制过程简单的说就是 master 将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制日志行数据操作
1.MySQL主服务器配置
配置MySQL配置文件
[root@localhost /]
[root@szxdb etc]
service mysql restart
service mysql stop
[root@master ~]
log-bin= mysql-bin-master
server-id= 1
binlog-do-db= test
binlog-ignore-db= mysql
[root@master ~]
授权主从同步slave用户权限
[root@master ~]
mysql> grant replication slave on *.* to slave@192.168.183.139 identified by "root123";
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show master status;
mysql> show binlog events\G;
2.MySQL从服务器配置
[root@slave ~]
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
修改从服务器配置文件
[root@slave ~]
server-id=2
[root@slave ~]
[root@slave ~]
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> change master to master_host='192.168.183.140',master_user='slave',master_password='123456';
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave;
mysql> show slave status\G;
可以看到出现了两个为 YES,则主从配置成功了
参数 | 作用 |
---|
Slave_IO_Running | 负责与 Master 主机的 IO 通信 | Slave_SQL_Running | 负责自己的 slave mysql 进程 |
4.查看主服务器主从同步状态
[root@master ~]
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show processlist\G
3.测试主从同步
在主服务器模拟程序插入数据
切换到从库进行查看
至此,主从同步基础搭建完成。
4、主从同步排错
1.主从不同步 登录主库看一下bin -log 的位置,然后再进行同步。
登录从库执行 MySQL 命令:
mysql> stop slave;
mysql> change master to master_log_file='mysql-bin-master.000001',master_log_pos=444;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave ;
mysql> show slave status\G
如果出现Slave_IO_Running: Yes, Slave_SQL_Running: Yes那代表已经在同步了。
排错总结: 1.IO_Running排错思路: 二进制日志没有开启 IPTABLES 没有放开端口 对应的主机 IP 地址写错了 用户名或密码写错了
2.SQL_Running排错思路: 主从服务器数据库结构不统一。出错后如果数据少,可以手动解决创建插入,再更新 slave 状态。 注:如果主上误删除了。那么从上也就误删除了。 #因此主上要定期做 mysqldump 备份。
|