环境准备
Master 172.16.0.14
Slave 172.16.0.19
关闭防火墙和selinux
系统时间需要同步
master和slave的数据库版本保持一致(系统版本保持一致)
主从复制
编辑配置文件
--在Master 上编辑配置文件
vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
--参数解释
server-id=1 #设置server-id为1, Master和Slave的server-id不能一样
log-bin=mysql-bin #开启binlog日志
--在Slave 上编辑配置文件
vim /etc/my.cnf
[mysqld]
server-id=2
relay-log=/data/DB/relay.log
重启 Mysql
--在Master 和Slave 上重启Mysql
systemctl restart mysqld
systemctl restart mysqld
配置主从
--在Master 进行以下操作
--登录数据库
[root@localhost /]# mysql -uroot -p123456
--创建授权用户
mysql> grant replication slave on *.* to 'slave'@'172.16.0.19' identified by '123456';
--查看binglog信息
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 471
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
--在Slave 进行以下操作
--登录数据库
[root@localhost /]# mysql -uroot -p123456
--配置同步信息
mysql> change master to master_host='172.16.0.14',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=471;
--参数解释
master_host= #Master IP
master_user= #同步用户
master_password= #密码
master_port= #Mysql 端口
master_log_file= #Master上面查看到的二进制日志名
master_log_pos= #Master上面查看到的POS值
--启动主从复制
mysql> start slave;
--查看主从同步的状态
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
验证主从
--在Master 创建数据库和创建表
mysql> create database db;
mysql> use db;
mysql> create table db(id int,name char(8),passwd varchar(21));
--插入数据
mysql> insert into db values(1,'END',123456);
mysql> insert into db values(2,'TOM',123456);
--在Slave 查看数据是否同步成功
mysql> select * from db.db;
+------+------+--------+
| id | name | passwd |
+------+------+--------+
| 1 | END | 123456 |
| 2 | TOM | 123456 |
+------+------+--------+
2 rows in set (0.00 sec)