MySQL 主从复制实现

MySQL 主从复制是一个异步的赋值过程,底层是基于mysql数据库自带的二进制日志功能,就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。

MySQL 复制过程分为3步

  1. master 将改变记录到二进制日志(binary log)
  2. slave将master的binary log 拷贝到它的中继日志(ralay log)
  3. slave重做中继日志中的事件,将改变应用到自己的数据库中

 

 

 

配置条件:两个数据库

主库master 192.168.50.100

从库 slave   192.168.50.101

主库master 配置

  • 修改mysql数据库的配置文件 /etc/my.cnf ,添加条件 
复制代码
[mysql]
==========以下是配置文件中的信息=============
# 配置编码为utf8 ,可以暂不配置
character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'

# 配置要给Slave同步的数据库,不设置会同步所有修改的数据库
binlog-do-db=test
# 不用给Slave同步的数据库,一般是Mysql自带的数据库就不用给Slave同步了
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
# 自动清理30天前的log文件
expire_logs_days=30
# 启用二进制日志,必须开启
log-bin=mysql-bin
# Master的id,这个要唯一,唯一是值,在主从中唯一 必须开启
server-id=3
复制代码
  • 重启MySQL
systemctl restart mysqld
  • 查看log_bin日志是否启动成功
-- 
show variables like '%log_bin%';

 

  • 查看master状态
show master status;

 

  • 登陆Master的数据库,并创建一个用户用于同步数据:
--这是一个教程给的创建一个用来同步的用户
create user 'backup'@'%' IDENTIFIED BY 'LDCldc-2020';
grant file on *.* to 'backup'@'%';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%';

--这是另一个教程给的语句比较短
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by ‘xxxxx’;  --xxxx是用户密码

 

查看master状态,记录下这两个数据FilePosition要记住,后面配置Slave的时候要使用到这两个数据。 master配置完成

show master status;

 

 

从库 slave 配置:

  • 在Slave中同样要创建test数据库,并且授权给test用户:(这一步不要的话在主库操作的其他数据库也会同步到slave)

 

# 创建同步数据的test数据库
create database test default character set utf8mb4 collate utf8mb4_general_ci;
# 授权
grant all privileges on test.* to 'test'@'%';

 

  • 修改mysql数据库的配置文件 /etc/my.cnf ,添加条件
# 配置从服务器的ID,唯一的
server-id=4
#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。
read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE

 

  • 重启Slave中的Mysql服务:
systemctl restart mysqld

 

  • 在Slave中添加Master的信息:
-- master_host是Master的ip,master_log_file和master_log_pos就是配置之前查看Master状态时显示的File和Position信息
change master to master_host='192.168.163.156',master_port=3306,master_user='backup',master_password='*password*',master_log_file='mysql-bin.000001',master_log_pos=1513; 

 

  • 登录MySQL数据库,查看slave状态:(当看到Slave_IO_RunningSlave_SQL_Running都是yes的时候,这表示主从配置成功。)
show slave status\G

 

posted @   没有好想法  阅读(159)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示