环境说明
主机名 | IP | 角色 | 数据库 |
---|---|---|---|
node1 | 192.168.114.129 | MySql | demo |
node2 | 192.168.114.133 | Mysql | demo |
目标
开启主从复制,并保证node1 和 node2 节点数据的一致性。
主数据库node1
创建测试数据
mysql> create databse demo default charset utf8;
mysql> use demo;
mysql> CREATE TABLE `school` (
`id` varchar(32) NOT NULL,
`school_name` varchar(32) NOT NULL COMMENT '学校名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学校';
mysql> insert into school values('1','北京大学');
mysql> insert into school values('2','清华大学');
创建同步账号
mysql> create user 'sync'@'192.168.114.%' identified by '123456';
mysql> grant replication slave on *.* to 'sync'@'192.168.114.%';
mysql> show master status;
导出测试数据
mysql> mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p demo > demo.sql
- --master-data=2 change master to 作为注释添加到dump文件中 , 1 表示作为语句出现在dump文件中
- --routines 导出存储过程
- --triggers 触发器
- --events 事件
复制到从数据库上
scp demo.sql root@192.168.114.133:/www/sql
从数据库node2
mysql -uroot -p -e"create database demo default charset utf8";
#导入数据
mysql -uroot -p demo< demo.sql
#设置master信息
change master to master_host='192.168.114.129',master_user='sync',master_log_file='mysql-bin.000001',MASTER_LOG_POS=154,master_password='123456';
#master_host : master 主机ip
#master_log_file : dump后的日志记录了这个值
#MASTER_LOG_POS : dump后的日志有这个值,记录了日志的位置
#开启复制链路
mysql> start slave;
mysql> show slave status G
tips
主数据库必须开启bin log日志
每个数据库配置不同的server_id 和 uuid
vim /etc/my.cnf
log-bin=mysql-bin
server_id=9