Replication 实践


###master###
1、
创建用
于 复制功能的专用账号
mysql -u root -p
mysql>GRANT REPLICATION SLAVE ,RELOAD,SUPER ON *.* TO 'replUser'@'%' identified by 'slave2016';
mysql>flush privileges;

2、
检查并记录主服务器 当前binlog文件名和偏移量位置

####slave###
3、
在 /etc/my.cnf 配置文件中增加
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin # relay_log配置中继日志
relay_log_info_file=relay-log.info
read_only=1
log_slave_updates = 1 #log_slave_updates表示slave将复制事件写进自己的二进制日志
relay_log_purge=0 # 一主一丛不需要此项,两从及以上建议开次参数,防止切换为成主库的从库自动删除中继日志后,无法给其他从库应用这部分日志
 
然后配置 主从关系
mysql -u root -p
mysql>change master to master_host='172.31.107.59',master_user='replUser',master_password='slave2016',master_log_file='mysql-bin.000002',master_log_pos=1335;
mysql> start slave;

4、
检查从服务器复制功能状态
mysql>show slave status\G;

Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

#####master#####
5、
主从服务器复制是否同步测试。登录mater 创建库及表和插入数据
mysql>create database wenzhongDB;
mysql>use wenzhongDB
mysql> create table city(id integer,code varchar(12),name varchar(32) default '',primary key(id,code));
mysql>insert into city values(1,'bj','beijing'),(1,'zjk','zhangjiakou');
mysql> insert into city values(3,'tj','tianjing'),(4,'sjz','shijiazhuang'),(5,'hb','hebei'),(6,'lf','langfang'),(7,'xj','xinjiang'),(8,'shz','shihezhi');

#####################################################################3

如果是slave_io_running no了,那么就我个人看有三种情况,一个是网络有问题,连接不上,第二个是有可能my.cnf有问题.
一旦io为no了先看err日志,看看有什么错,很可能是网络,也有可能是包太大收不了,这个时候从机上改max_allowed_packet这个参数。


Slave_SQL_Running 为 No 时:

解决办法一

1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.

一般是事务回滚造成的:

解决办法:
mysql>stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql>start slave ;

推荐使用该办法.
set GLOBAL SQL_SLAVE_SKIP_COUNTER=N,用来跳过备机的一条或N条出错的复制语句。
在show slave status 中会有出错的语句。
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1 一次后会发现跳过了一条语句。
如果设置完后发现还有错误语句。要多执行几次。

解决办法二

首先停掉Slave服务:stop slave。
到主服务器上查看主机状态:
记下File和Position对应的值

登录master

使用sql语法:show master status查看master运行状态:

然后到slave服务器上执行手动同步:
mysql>change master to master_host = '172.31.107.59',master_port = 3306,master_user = 'replUser',master_password='slave2016',master_log_file='master-bin.000002',master_log_pos=2079;

重新定位日志文件和日志位置。
然后: start slave,启动slave。

猜你喜欢

转载自blog.csdn.net/zhaowenzhong/article/details/76020822