mysql主从复制
主节点:win10,mysql5.7.15
1,关闭防火墙或设置防火墙规则(否则从节点无法连接主节点,导致Slave_IO_Running: No):
我使用了设置一条入站规则
然后设置该‘3306端口’这条规则的作用域
或者直接关闭防火墙,之后就可以让从节点mysql远程连接到主节点了
2,主节点授权同步用户
官方文档是分两步进行的:
mysql> CREATE USER 'repl_user'@'192.168.200.101' IDENTIFIED BY 'test111111';
mysql> GRANT REPLICATION SLAVE ON . TO 'repl_user'@'192.168.200.101';
实际上一条命令即可:
grant replication slave on *.* to 'repl_user'@'192.168.200.101' identified by 'test111111';
3,主节点master规则设置
在my.ini中设置相关规则如下:这些主从复制规则需要在[mysqld]下编写
#主服务器的配置 #开启二进制日志 log-bin=master-bin #为服务器添加唯一的编号 server-id=1 #只把shopping数据库的数据进行主从复制,可以设置多行 binlog-do-db=shopping #忽略mysql数据库的操作(不对这个数据库进行主从备份,一般是系统数据库),可以设置多行 #binlog-ignore-db=mysql #binlog-ignore-db=information_schema #binlog-ignore-db=performance_schema #binlog-ignore-db=sys #下面两行用户在双主(多主循环)互相备份,表的主键自动增长问题。防止主键冲突 #auto-increment-increment=10 #auto-increment-offset=1
重启mysql
至此,master配置完成,
从节点:ubuntu16.10,mysql5.7.17
注:网上都说 从节点mysql版本要大于等于主节点mysql版本
1,ubuntu16.10上安装mysql5.7.17
参考Ubuntu安装MySQL5.7.10,步骤是一样的
(1)、首先到官网下载ubuntu版本的mysql
由于ubuntu是64位的,所以我下载的是这个包:mysql-server_5.7.17-1ubuntu16.10_amd64.deb-bundle.tar
(2)、然后将包解压到某个文件夹下面:
我就直接解压到当前文件夹下,里面包含如下文件(tar -zxvf mysql.................)
(3)、安装deb文件
sudo dpkg -i XXXX,安装过程中注意安装顺序,如果顺序错了,会有提示信息提示具体需要先安装那些东西的。
1. mysql-common
2. libmysqlclient20
3. libmysqlclient-dev
4.libmysqld-dev
5. mysql-community-client
6. mysql-client
7. mysql-community-source
8. mysql-community-server
只需要将这8个包安装就可以了
其中在安装mysql-community-server时需要libmecab2_0.996-1.3_amd64.deb(注意提示信息中需要的最低版本)
下载地址http://packages.ubuntu.com/yakkety/libmecab2
(4)、前三步没有问题,则安装成功
/etc/init.d/mysql start 启动mysql
/etc/init.d/mysql stop 关闭mysql
2,配置从节点slave规则
打开mysql配置文件:/etc/mysql/my.cnf,我的配置如下
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
server-id=3
replicate-do-db=shopping
需要设置唯一的id号,备份的数据库名称
开启主从复制
1,获取当前主节点的状态
主节点上锁:
mysql> FLUSH TABLES WITH READ LOCK;
主节点查看状态:
mysql> show master status; +-------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-------------------+----------+--------------+------------------+-------------------+ | master-bin.000002 | 447 | shopping | | | +-------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
2,从节点配置并启动同步。查看状态
如果一开始配置了slave需要执行下面两句话
stop slave;
reset slave;
然后配置slave
change master to master_host='192.168.200.115', master_user='repl_user', master_password='test123456', master_port=3306, master_log_file='master-bin.000002', master_log_pos=447;
可以看到,这个配置中的用户为刚开始在master中创建的用于备份的用户。
然后启动slave
start slave;
查看从节点的状态
mysql> show slave status \G;
其中的如下两个结果都为Yes,表示成功。
3,主节点解锁并进行插入操作验证是否正常同步
主节点解锁:
mysql> UNLOCK TABLES;
主节点shopping数据库下的某个表增加一条数据,若从节点也同步增加了这条数据,则可以验证成功