本篇文章为大家展示了Mysql中如何实现半同步复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、环境准备:
centos系统服务器2台、一台用户做Mysql主服务器,一台用于做Mysql从服务器,配置好yum源、防火墙关闭、各节点时钟服务同步、各节点之间可以通过主机名互相通信
192.168.41.145 master
192.168.41.137 slave
二、准备步骤:
1、iptables -F && setenforce 清空防火墙策略,关闭selinux
2、①vim /etc/hosts
192.168.41.145 master #各节点之间可以通过主机名互相通信
192.168.41.137 slave
② ntpdate 172.17.0.1 #各节点时钟服务同步
3、拿两台服务器都使用yum方式安装Mysql服务,要求版本一致
4、分别启动两台服务器mysql服务,确保服务正常.
三、实现步骤:
1、配置master主服务器
对master进行配置,包括打开二进制日志,指定唯一的servr ID。例如,在配置文件加入如下值。
vim /etc/my.cnf
server-id=1 #配置server-id,让主服务器有唯一ID号
log-bin=mysql-bin #打开Mysql日志,日志格式为二进制
skip-name-resolve#关闭名称解析,(非必须)
2.创建复制帐号
在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连master 。进行复制操作的用户会授予REPLICATION SLAVE权限。
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'192.168.%.%' IDENTIFIED BY 'ke';
3.查看主服务器状态
在Master的数据库执行show master status,查看主服务器二进制日志状态
4、配置slave从服务器
对slave进行配置,打开中继日志,指定唯一的servr ID,设置只读权限。在配置文件加入如下值
server-id=2 #配置server-id,让从服务器有唯一ID号
relay_log = mysql-relay-bin #打开Mysql日志,日志格式为二进制
read_only = 1 #设置只读权限
log_bin = mysql-bin #开启从服务器二进制日志
log_slave_updates = 1 #使得更新的数据写进二进制日志中
5.启动从服务器复制线程
①stop slave;
②reset slave;
③让slave连接master,并开始重做master二进制日志中的事件。
CHANGE MASTER TO
MASTER_HOST='192.168.41.145',
MASTER_USER='slave',
MASTER_PASSWORD='ke', 【主从密码要一致】
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=278;
※注意
IP为master的IP;
密码和master设置一致;
POS设置查看master得到:show master status
④start slave;# 启动复制线程。
6、查看从服务器状态
可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show processlist \G查看当前复制状态:
Slave_IO_Running: Yes #IO线程正常运行
Slave_SQL_Running: Yes #SQL线程正常运行
【两者必须同时YES,才算启动成功】
附:主从同步出现一下错误:
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
解决方法:
导致lave_IO_Running 为connecting 的原因主要有以下 3 个方面:
1、网络不通
2、密码不对
3、pos不对
四、验证
在master上插入数据,查看slave上是否可以同步
create database liuke;#建数据库
use liuke;
create table mini_tb(id int(3),name char(10)); #建表
insert into mini_tb values(001,'candy'); #插入数据
select*from mini_tb; #查看表内容
在slave上查看,可以同步则成功。
五、添加新slave服务器
假如master已经运行很久了,想对新安装的slave进行数据同步,甚至它没有master的数据。
大型站长资讯类网站! https://www.0818zz.com