码迷,mamicode.com
首页 > 其他好文 > 详细

主从复制+校验

时间:2016-05-07 22:02:55      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

17:27

一、搭建主从库

 

主库上执行:

grant replication slave,replication client on *.* to ‘主库新建用户用户名‘@‘%‘ identified by ‘主库新建用户的密码‘;

 

eg:grant replication slave ,replication client on *.* to ‘mysqlsync‘@‘127.0.0.1‘ identified by ‘123123‘

 

在从库上执行:

change master to

master_host=‘主机地址‘,

master_user=‘主库新建用户的用户名‘,

master_password=‘主库新建用户的密码‘,

master_port=主库端口号,

master_log_file=‘当前正在用的binlog日志文件名‘,

master_log_file=当前binlog日志记录到那个位置,

master_connect_retry=60

 

查看 master_log_file    master_log_file

当前的binlog文件在数据目录下

 show master status; File列文件名

当前binlog日志记录到那个位置:

show master status;  Position列的值

注意:三个数字的值不用单引号,其他的值需要单引号引起来

eg

CHANGE MASTER TO

MASTER_HOST=‘127.0.0.1‘,

MASTER_USER=‘mysqlsync‘,

MASTER_PASSWORD=‘123123‘,

MASTER_PORT=3306,

MASTER_LOG_FILE=‘mysqlserver.000003‘,

MASTER_LOG_POS=120,

MASTER_CONNECT_RETRY=10;

 

 

执行完成后:在从库上执行

开启从库:

start slave;

 

查看状态:

show slave status;

 

mysql> show slave status \G;

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 172.16.145.106

                  Master_User: mysqlsync1

                  Master_Port: 33061

                Connect_Retry: 60

              Master_Log_File: mysqlserver.000029

          Read_Master_Log_Pos: 544

               Relay_Log_File: mysql2-relay-bin.000002

                Relay_Log_Pos: 285

        Relay_Master_Log_File: mysqlserver.000029

             Slave_IO_Running: Yes        正常,完成

            Slave_SQL_Running: Yes        正常,完成

 

检测:主库建立表,从库上也会建立同名的表:

 

 

 

 

二、主从校验:

利用pt-table-checksum做主从一致性校验

前提:是主从复制

全部在主库上执行:

 

1、给 pt-checksum授权

新建用户,因为主从复制,在从库上也会相应的新建这个用户

grant all privileges on *.* to ‘checksum‘@‘%‘ identified by ‘checksum‘;

GRANT ALL PRIVILEGES ON *.* TO ‘checksum‘@‘%‘ IDENTIFIED BY PASSWORD ‘123123‘  password  是密文

--这里在新建用户checksum的同时,也给这个用户添加所有的权限

 

 

2、创建从库连接信息表  = 新建一个表,用来存放从库的登录信息

create table `dsns`(

`id` int(11) not null auto_increment,

`parent_id` int(11) default null,

`dsn` varchar(255) not null,

primary key (`id`)

)engine=innodb auto_increment=2;

 

--注意:这里用的是反引号,不是单引号

 

如下插入的是从库的连接信息

insert into dsns values(1,1,‘h=172.16.145.106,p=checksum,u=checksum,P=3307‘);

--第一步中新建的用户,密码,从库的端口号

 

3、新建一个测试表,并插入几行数据用来测试

 

create table t(id int(11),name varchar(20));

 

insert into t values(1,‘guanyu‘);

insert into t values(2,‘zhangfei‘);

insert into t values(3,‘taishici‘);

insert into t values(4,‘zhangliao‘);

insert into t values(5,‘ganning‘);

 

--主从复制,从库上也会新建一个表,并插入数据

 

 

 

4、校验:在linux中执行:

pt-table-checksum --user=checksum --password=123123 --port=3306  --databases=test --host=172.16.145.30   --recursion-method="dsn=h=172.16.145.30,D=test,t=dsns" --no-check-replication-filters --tables=test.t2

 

 

--user=checksum --password=gangbeng --port=3306 --host=172.16.145.106        --这个是主库的登录信息

--databases=test        --这个是要校验的在主库中存放的库

--recursion-method="dsn=h=172.16.145.106,D=test,t=dsns"                --指定从库的登录信息,也就是(2、)中插入的数据

 --tables=test.t        --指定校验的文件

 

 

 

5、校验结果:

[root@centos6 data1]# pt-table-checksum --user=checksum --password=gangbeng --port=33061 --databases=test --host=172.16.145.106 --recursion-method="dsn=h=172.16.145.106,D=test,t=dsns" --no-check-replication-filters --tables=test.t

            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE

05-07T23:16:46      0      0        5       1       0   0.016 test.t

 

--没有其他信息,就成功了

 

 

 

7、实验:

1.在从库中插入一行数据:

insert into t values(6,‘zhaoyun‘);

 

--这样主库与从库相同的表中的数据,就不相同了

 

 

 

2.再一次进行校验

[root@centos6 data1]# pt-table-checksum --user=checksum --password=gangbeng --port=33061 --databases=test --host=172.16.145.106 --recursion-method="dsn=h=172.16.145.106,D=test,t=dsns" --no-check-replication-filters --tables=test.t

            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE

05-07T23:24:35      0      1        6       1       0   0.060 test.t

 

--因为主从库的数据不一致,所以在DIFFS中显示为1

主从复制+校验

标签:

原文地址:http://www.cnblogs.com/xiaomuyhn/p/5469173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!