MySQL数据库的主从复制介绍及操作步骤

一、基本概念


在互联网应用中,大部分都是读多写少的场景; 设置两个库,主库和读库,主库的职能是负责写,从库主要是负责读,可以建立读库集群,通过读写职能在数据源上的隔离达到减少读写冲突、释压数据库负载、保护数据库的目的。在实际的使用中,凡是涉及到写的部分直接切换到主库,读的部分直接切换到读库,这就是典型的读写分离技术;通过读写分离,可以保证主库的写入性能,同时也可以提高从库的读取性能;该方案普遍适用于大多数业务场景。

在读写分离中,主数据库和从数据库保持数据库结构的一致,主库负责写,当写入数据的时候,会自动同步数据到从数据库;从数据库负责读,当读请求来的时候,直接从读库读取数据,主数据库会自动进行数据复制到从数据库中。 同时从库也可以作为主库的一个数据备份,从系统健壮性及数据安全性方面,读写分离技术同样重要。

二、环境准备


1. 两台CentOS主机,分别作为主库及从库的宿主机。
2. 确保主服务器可以通过网络访问从服务器。


三、搭建MySQL主从复制的主要步骤


3.1 安装Docker


1.卸载旧版本(如果有)

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、安装需要的软件包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3、设置docker镜像源(阿里云源)

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、更新yum软件包索引

sudo yum makecache fast

5、安装docker

sudo yum install docker-ce  

6、启动Docker并加入开机启动
#启动:

sudo systemctl start docker
sudo systemctl enable docker

7.验证安装是否成功

sudo docker version


(有client和service两部分表示docker安装启动都成功了)

3.2 安装MySQL

在两台主机上,分别使用Docker安装MySQL(MySQL版本需要保持一致),主要命令如下:
#拉取镜像(默认版本)

docker pull mysql

#在3307端口运行MySQL

docker run -itd --name mysql-docker -p 3307:3306 -e MYSQL_ROOT_PASSWORD=passwordxx mysql
3.3 数据库的配置


#主服务器的MySQL配置
1、在主服务器上打开MySQL配置文件my.cnf,并添加以下配置:

[mysqld]
log-bin=mysql-bin
server-id=1

其中
log-bin:启用二进制日志记录,用于记录主服务器上的所有更改。
server-id:为主服务器设置唯一标识符,用于标识主服务器和从服务器。2、在主服务器上创建一个用于从服务器的账户,并授予复制权限:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

其中
repl:从服务器账户的用户名。
password123:从服务器账户的密码。

3、使用以下命令查看主服务器的二进制日志文件名和位置:

SHOW MASTER STATUS;

记下File和Position的值,稍后将在从服务器的配置时使用。

4、配置从服务器
 在从服务器上打开MySQL配置文件my.cnf,并添加以下配置:

 [mysqld] 
 server-id=2

5、重启主从服务器上的MySQL使配置生效。

sudo docker restart mysql

6、启动从服务器复制
在从服务器上的MySQL执行以下命令,连接到主服务器:

CHANGE MASTER TO MASTER_HOST = 'master_host_name', MASTER_USER = 'repl', MASTER_PASSWORD = 'password123', MASTER_PORT = 3307, MASTER_AUTO_POSITION = 0, MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS=747; 

其中
master_host_name:主服务器的IP地址或主机名
master_user:上述步骤创建的从服务器复制账号
master_password:上述步骤创建的从服务器复制账号的密码
recorded_log_file_name:上述步骤中记录的主服务器的二进制日志文件名。
recorded_log_position:上述步骤中记录的主服务器的二进制日志位置。

7、启动从服务器复制

START SLAVE;

8、使用以下命令检查从服务器复制进程是否已启动

SHOW SLAVE STATUS\G


如果Slave_IO_Running和Slave_SQL_Running的值都为“YES”,则表示从服务器已经成功连接到主服务器并开始复制。

9、 其他命令
//如果需要停止主从服务复制的功能,使用以下命令:
 stop slave;
//若搭建主从复制的过程出错,则需要清理掉之前的配置,还需要执行以下命令:
reset slave all;

3.4 数据验证与测试

1. 在主从数据库分别导入或创建对应的数据表。

2.在主库进行数据的插入或者修改删除,查看从库的数据变化。

福利来了,京东618无门槛红包,速抢,亲测可用!!!

京东618狂欢红包,无门槛,速抢!!!icon-default.png?t=N7T8https://u.jd.com/kbEMRtj​​​​​​​​​​​​​​

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u010303355

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值