Mysql主从同步

  mysql主从呢,听就听得多了应该不难,但动手做还是第一次,做起来发现还是出了点小问题耽误了一下,这里做一下记录。

先记录问题:

slave_io_running: no

解决方法:

1、查mysql的error.log日志

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

原因分析:

mysql 5.6的复制引入了uuid的概念,各个复制结构中的server_uuid得保证不一样,但是查看到直接copy  data文件夹后server_uuid是相同的,show variables like '%server_uuid%';

解决方法:

找到data文件夹下的auto.cnf文件,修改里面的uuid值,保证各个db的uuid不一样,重启db即可

2、配置文件my.cnf里面server.id一样

原因分析:

和server_uuid类似,servier_id也得保证不一样

解决方法:

找到my.cnf配置文件中的server_id,修改从库的server_id保证和复制结构中的其他db不一样,重启db即可

3、在配置slave同步时因为slave访问master没有权限导致;

注意用户权限

4、master上的mysql-bin.xxxxxx文件全被误删除了;

解决方法:

重建主从

master:

重启master库:service mysqld restart

mysql> show master status;

slave:

mysql> slave stop;

mysql> change master to Master_Log_File='mysql-bin.000001',Master_Log_Pos=98;

mysql> slave start;


一、基础环境

Centos6.5版本

master:192.168.2.52

slave: 192.168.2.65

注意下面几点:

1)防火墙开放3306端口。

2)关闭selinux。

3)同步前,双方数据库中需要同步的数据要保持一致。这样,同步环境实现后,再次更新的数据就会如期同步了。

二、搭建过程

在master上面新建库测试,这里只同步一个库

mysql> CREATE DATABASE center CHARACTER SET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

mysql> use center;

Database changed

mysql> create table if not exists users (id int(10) PRIMARY KEY AUTO_INCREMENT,name varchar(50) NOT NULL);

Query OK, 0 rows affected (0.02 sec)

mysql> insert into users values(1,"zhangsan"),(2,"lisi");

Query OK, 2 rows affected (0.00 sec)

Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from users;

+----+-----------+

| id | name      |

+----+-----------+

|  1 |  zhangsan |

|  2 |    lisi  |

+----+-----------+

2 rows in set (0.00 sec)

下面是master数据库上的操作:

1)设置master数据库的my.cnf文件(在[mysqld]配置区域添加下面内容)

[root@master ~]# vim /usr/local/mysql/my.cnf

server-id=1        #数据库唯一ID,主从的标识号绝对不能重复。

log-bin=mysql-bin    #开启bin-log,并指定文件目录和文件名前缀

binlog-do-db=center  #需要同步的数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。

binlog-ignore-db=mysql  #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。

sync_binlog = 1      #确保binlog日志写入后与硬盘同步

binlog_checksum = none  #跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none

binlog_format = mixed  #bin-log日志文件格式,设置为MIXED可以防止主键重复。

2)导出master数据库,导入到slave数据库中。保证双方在同步环境实现前的数据一致。

导出数据库之前先锁定数据库

mysql> flush tables with read lock;    #数据库只读锁定命令,防止导出数据库的时候有数据写入。unlock tables命令解除锁定

mysqldump -uroot -p密码 center > /opt/center.sql

scp center.sql root@192.168.2.65:/opt/ #将导出的sql文件上传到slave机器上

3)设置数据同步权限

mysql> grant replication slave,replication client on *.* to slave@'192.168.2.65' identified by "123456";

Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

4)查看主服务器master状态(注意File与Position项,从服务器需要这两项参数)

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000009 |      721 |  center      |                  |                  |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.01 sec)


下面是slave数据库上的操作:

1)设置slave数据库的my.cnf配置文件

[root@master ~]# vim /usr/local/mysql/my.cnf

.......

server-id=2  #设置从服务器id,必须于主服务器不同

log-bin=mysql-bin  #启动MySQ二进制日志系统

replicate-do-db=center  #需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。

replicate-ignore-db=mysql  #不同步mysql系统数据库

slave-skip-errors = all  #跳过所有的错误错误,继续执行复制操作

2)在slave数据库中导入从master传过来的数据。

mysql -uroot -p密码 -e "create database if not exists center;"

mysql -uroot -p密码 center < /opt/center.sql

3)配置主从同步指令

mysql> stop slave;  #执行同步前,要先关闭slave

mysql> change  master to master_host='192.168.2.52',master_user='slave',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=721;

mysql> start slave;

mysql> show slave status \G;

.......

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.2.52

Master_User: slave

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000009

Read_Master_Log_Pos: 721

Relay_Log_File: mysql-relay-bin.000009

Relay_Log_Pos: 721

Relay_Master_Log_File: mysql-bin.000009

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: center

Replicate_Ignore_DB: mysql

.............

Seconds_Behind_Master: 0

如上,当IO和SQL线程的状态均为Yes,则表示主从已实现同步了!



下面测试下Mysql主从同步的效果

现在master数据库上写入新数据

mysql> unlock tables;    #解锁,否则新数据无法写入

mysql> insert into center.users values(3,"test");

Query OK, 1 row affected (0.00 sec)

然后在slave数据库上查看,发现master上新写入的数据已经同步过来了

mysql> select * from center.users;

+-----+-----------+

| id  | name      |

+-----+-----------+

|  1 |  zhangsan |

|  2 |  lisi    |

|  3 |  test    |

+-----+-----------+

3 rows in set (0.00 sec)

至此,主从同步环境已经实现!


参考网址:http://www.cnblogs.com/kevingrace/p/6256603.html

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

推荐阅读更多精彩内容

  • 简介 通常数据库的主从同步可用作数据备份,也可以用来解决数据库访问的热点问题。通过读写分离(主库写,从库读)的方式...
    eriolchan阅读 1,640评论 0 1
  • 主从同步 第一篇文章说过,初始版本的系统一直单库运行,所有的读、写,以及数据存储都放在了同一台dbserver中。...
    AlanKim阅读 515评论 1 7
  • 一、 十四年前,姜国城破。 周天子登基下令分封七十一诸侯国,于周初之时封古姜国。姜国建国短短六十年,虽说君主勤政爱...
    江伐檀阅读 261评论 0 1
  • 公司:宁波大发化纤有限公司 姓名:冯玉停 期数:六项精进224期感谢二组学员,234期感谢三组志工,260期感谢一...
    尘埃wyzh阅读 222评论 0 0