mySql主从同步复制(log-bin日志)

环境

(主)环境 :  linux(centos 7.0.2)  Mysql(5.6.37)  IP:192.168.1.3
(从)环境 :  linux(centos 7.0.2)   Mysql(5.6.36)  IP:192.168.1.4

随便说说(也可忽略)

为了配置准确无误,先将权限、防火墙等等处理
1、关闭windows、linux防火墙:
windows:控制面板->防火墙->打开或关闭Windows防护墙关闭Windows防火墙。
linux:service iptables stop 如果不行,参考centos下关闭防火墙和Selinux
2、权限
linux授权远程访问(2句话):

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH   PRIVILEGES; 

正文开始

主环境配置

1.修改mysql的配置文件  my.cnf  my.ini  我的配置文件路径是  /etc/my.cnf
   [mysqld]
   log-bin=mysql-bin    #(必须配置)   启用二进制日志
   server-id=1          #(必须配置)    为本台服务器配置唯一的Server ID
   binlog-do-db=aco_game_server #(可选配置)要同步的数据库名,要同步多个数据库,就多加几个replicate-db-db=数据库名
   binlog-ignore-db=mysql  #(可选配置)//要忽略的数据库
#二进制日志自动删除的天数,默认值为0,表示“没有自动删除”,启动时和二进制日志循环时可能删除  
expire_logs_days = 7    
2.添加从库权限账号
  mysql -uroot -p
  CREATE USER 'mysync'@'116.62.126.1' IDENTIFIED BY 'abC123456##'; #创建用户
  GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'116.62.126.1';#分配权限
  flush privileges;   #刷新权限

3.重启主服务器
  /bin/systemctl restart mysqld.service(centos)  
  /bin/systemctl restart mysql.service(ubuntu)

4.查看主服务器状态
 show master status;

从环境配置

1.修改mysql的配置文件  my.cnf  my.ini  我的配置文件路径是  /etc/my.cnf
   [mysqld]
   log-bin=mysql-bin    #(必须配置)   启用二进制日志
   server-id=2          #(必须配置)    为本台服务器配置唯一的Server ID
   replicate-do-db=mstest  #(可选配置)#在master端不指定binlog-do-db,在slave端用replication-do-db来过滤,要同步多个数据库,就多加几个replicate-db-db=数据库名
   binlog-ignore-db=mysql #(可选配置)//要忽略的数据库
   relay-log=mysqld-relay-bin #//启用中继日志relay log

2.配置连接主服务器的信息
  change master to 
  master_host='47.111.188.1',
  master_user='mysync',
  master_password='abC123456##',
  master_log_file='mysql-bin.000002', 
  Master_Port=3306,
  master_log_pos=154;


  flush privileges;     #刷新权限
  start slave;

3.重启从服务器
  /bin/systemctl restart mysqld.service(centos)  
  /bin/systemctl restart mysql.service(ubuntu)

 4.查看从服务器状态
  show slave status \G;

到此可以进行主从测试了。

注:在本次实验中,由上述my.cnf配置文件可得知,主从同步针对的数据库(除了mysql,sys,information_schema,performance_schema这些以外)的其它所有数据库都会进行同步(含数据库、表、数据等)

1、如当前数据库情况如下:

image

2、在master主库容器中,创建数据库master_demo,并在此库下创建表userinfo,并插入一条记录

create database master_demo;
use master_demo;
create table userinfo(username varchar(50),age int);
insert into userinfo values('Tom',18);
image

3、此时,进入从库容器中,查看:

image

确实已经将在master主库新建的数据库和表记录都同步过来了。

既然是主从同步,那反过来验证一下,在从库下插入记录后,会不会同步到主库中来呢?

在从库上操作插入记录:

insert into userinfo values('slave',20);

查看:

image

切到master主库中,查看:

image

发现在master主库中,还是只有一条记录,说明与预期设想的一样,在从库中插入记录,是不会同步到master主库中来的

再来一波,在主库master上,插入新记录:

insert into userinfo values('master',25);
image

在从库中,查看

image

发现在master主库中新加入的master记录,在从库中同步过来了。

提示:

主服务器:
提示1:如果你不配置server-id或者配置值为0,那么主服务器将拒绝所有从服务器的连接。
提示2:在使用InnoDB的事务复制,为了尽可能持久和数据一致,你应该在my.cnf里配置innodb_flush_log_at_trx_commit=1 和 sync_binlog=1;
For the greatest possible durability and consistency in a replication setup using InnoDB with transactions, you should useinnodb_flush_log_at_trx_commit=1 and sync_binlog=1 in the master my.cnf file.
提示3:确保主服务器里的skip-networking选项未启用,如果网络被禁用,你的从服务器将不能与主服务器通信并且复制失败。
从服务器:
提示1:如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。
提示2:一般你不需要在从服务器上启用二进制日志,如果你在从服务器上启用二进制日志,那你可用它来做数据备份和崩溃恢复,或者做更复杂的事情(比如这个从服务器用来当作其它从服务器的主服务器)

FAQ

在搭建mysql主主复制的时候,创建一个新的具有replicaion权限的新用户,刚开始的操作如下: 
mysql> GRANT REPLICATION SLAVE ON test.* TO ‘server01’@’%’ IDENTIFIED BY ‘server01’; 
会提示错误:ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

错误的原因是因为,replication权限是一个全局权限,不可以指定在某一个库上,所以,把创建用户语句更改为如下即可:

mysql> GRANT REPLICATION SLAVE ON . TO ‘server01’@’192.168.40.129’ IDENTIFIED BY ‘568888’; 
Query OK, 0 rows affected (0.00 sec)

ok,一切正常,但是,为了安全起见,在创建新的用户的时候,最好指定登陆地址,不然别人拿着你的账号就要干坏事儿了,虽然这个账号只具备replication权限,但是也是具有危险性的。所以,最后的语句更改为:

mysql> GRANT REPLICATION SLAVE ON . TO ‘server01’@’192.168.40.129’ IDENTIFIED BY ‘568888’; 
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.01 sec)

报错ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
解决办法:

reset slave;
start slave;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容