标签:
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