前言
主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。
本文将实现数据库的主从复制
一、主从复制原理
MySQL 主从复制就是将一个 MySQL 实例(Master)中的数据实时复制到另一个 MySQL 实例(slave)中,而且这个复制是一个异步复制的过程。
实现整个复制操作主要由三个进程完成的,其中两个进程在 Slave(sql_thread 和IO_thread),另外一个进程在 Master(IO 进程)上。
二、具体步骤
- 先决条件
- 192.168.253.164 mysqk版本 5.7
- 192.168.253.190 mysql版本 5.7
- 安装数据库参考
#12.yum安装数据库7.5脚本
#!/usr/bin/bash
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum -y install yum-utils #直接使用命令修改要安装数据库
yum-config-manager --enable mysql57-community
yum-config-manager --disable mysql80-community
yum install -y mysql-community-server
systemctl start mysqld
systemctl enable mysqld
#grep password /var/log/mysqld.log 过滤密码
#mysqladmin -uroot -p'旧密码' password '新密码'
- 数据库设置好初始化之后,进行如下操作
进入数据库 授权从库
>mysql CREATE USER 'repl'@'%'
>mysql GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by
'密码'; #注意实际进行授权操作时 出于安全考虑应设置具体ip地址
- 在另一台从服务器进行测试
[root@localhost ~]# mysql -urepl -p'密码' -hmysql-master1 #对主库进行解析
- 在主库上修改mysql配置文件
[root@localhost ~]# vim /etc/my.cnf #在[mysqld]下添加如下内容
server-id=1 #定义server id master必写 不可一样
log-bin = mylog #开启binlog日志,master必写
#gtid_mode = ON #开启gtid
#enforce_gtid_consistency=1 #强制gtid
- 重启服务
[root@localhost ~]# mysql restart mysqld
- 在从库进行设置,修改配置文件
[root@localhost ~]# cat /etc/my.cnf #编辑以下内容
// my.cnf 文件
[mysqld]
server-id=2
[root@localhost ~]# systemctl restart mysqld #重启服务
- 进入从服务器进行设置
mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master1', --主库主机名 也可使ip
MASTER_USER='repl', --连接到主服务器的用户
MASTER_PASSWORD='密码'; -- 到主服务器的密码
mysql> start slave; #启动服务器复制线程
Query OK, 0 rows affected (0.09 sec)
检查从服务器io线程与sql线程是否都为 yes