mysql进行主从数据备份

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过一台主、多台从节点,主节点提供写操作,从节点提供读操作来实现读写分离,从而提升数据库的并发负载能力

问:主从同步(主从复制的)的原理。
答:主从同步的核心是二进制日志文件binary log,对数据库所有的增加、修改、删除操作都会在日志表里面记录一下的。mysql主从复制是异步的,串行化的,有延迟的,并不是实时的。   
第一步,master主节点将改变的数据记录在本地的二进制日志中binary log,该过程称为二进制日志事件。   
第二步,slave将master的binary log拷贝到自己的relay log(中继日志文件)中。   
第三步,中继日志事件,将数据读取到自己的数据库之中。

下面我们会以2台linux服务器在docker容器中构建mysql镜像进行搭建主从复制进行数据备份实例

  1. 首先,确保CentOS系统已经安装了Docker的依赖组件。通过运行以下命令来安装这些组件:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 安装Docker的稳定版本存储库。以下命令来设置存储库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker引擎。运行以下命令来安装Docker:
sudo yum install docker-ce
  1. 启动Docker服务。运行以下命令来启动Docker服务并设置它在系统启动时自动启动:
sudo systemctl start docker
sudo systemctl enable docker
  1. 现在,你可以验证Docker是否正确安装。运行以下命令来检查Docker版本:
docker --version
  1. 在终端或命令提示符中执行以下命令,下载MySQL 5.7的镜像:

    docker pull mysql:5.7
    
  2. 创建一个文件夹来存储MySQL的数据和配置文件。例如,可以在当前目录下创建一个名为mysql_data的文件夹。

  3. 在终端或命令提示符中执行以下命令,创建MySQL容器,并将数据和配置文件映射到本地文件夹:

     docker run --name mysql -v /usr/local/etc/mysql/mysql_data:/var/lib/mysql -v /usr/local/etc/mysql/config:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 -d mysql:5.7
    
    • -d 参数表示在后台运行容器。
    • -p 参数指定容器内部的端口号和主机的端口号映射关系。这里将容器的3306端口映射到主机的3306端口。
    • --name 参数用于指定容器的名称,这里将容器命名为mysql-container
    • -v 参数用于将主机上的文件夹与容器内的文件夹进行映射。将本地的/绝对路径/mysql_data文件夹映射到容器内的/var/lib/mysql文件夹。
    • -e 参数用于设置MySQL的root用户密码。将your_password替换为您自己的密码。
  4. 执行完上述命令后,MySQL容器将会在后台启动。您可以使用以下命令检查容器的状态:

    docker ps
    
实现主从mysql数据库
  1. 准备两台Linux服务器,分别为主服务器和从服务器。假设主服务器IP为192.168.0.1,从服务器IP为192.168.0.2。

  2. 在主服务器上安装MySQL,并确保MySQL服务已启动。

  3. 登录到主服务器上的MySQL控制台,创建一个用于复制的用户,并授予复制权限。假设用户名为replication_user,密码为password,复制权限为REPLICATION SLAVE。

CREATE USER 'replication_user'@'192.168.0.2' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'192.168.0.2';
FLUSH PRIVILEGES;
  1. 在主服务器上找到MySQL的配置文件my.cnf(通常位于/etc/mysql/my.cnf或/etc/my.cnf),并进行如下更改,在[mysqld]部分添加以下配置:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database_name

6.登录到从服务器上的MySQL控制台,创建一个用于复制的用户,并授予复制权限。假设用户名为replication_user,密码为password,复制权限为REPLICATION SLAVE。

CREATE USER 'replication_user'@'192.168.0.1' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'192.168.0.1';
FLUSH PRIVILEGES;

7.在从服务器上找到MySQL的配置文件my.cnf,并进行如下更改:

sudo nano /etc/mysql/my.cnf

在[mysqld]部分添加以下配置:

server-id = 2

保存并关闭文件。

8.重启主服务器和从服务器上的MySQL服务以使配置更改生效。

sudo service mysql restart

9.登录到从服务器上的MySQL控制台,设置从服务器连接到主服务器的相关参数。假设主服务器IP为192.168.0.1,主服务器端口为3306,复制用户名为replication_user,密码为password。

CHANGE MASTER TO MASTER_HOST='192.168.0.1', MASTER_PORT=3306, MASTER_USER='replication_user', MASTER_PASSWORD='password';
  1. 启动从服务器的复制进程。
START SLAVE;
  1. 检查从服务器的复制进程状态。
SHOW SLAVE STATUS\G

在结果中,确保以下字段的值为YES:

  • Slave_IO_Running
  • Slave_SQL_Running

如果两个字段的值都为YES,即表示主从复制已成功配置。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值