Mysql 主从复制

环境说明

主机名 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
请关于一下啦^_^

微信公众号

原文地址:https://www.cnblogs.com/haloujava/p/13501332.html