APP下载

mysql数据库备份之主从同步配置

消息来源:baojiabao.com 作者: 发布时间:2024-05-11

报价宝综合消息mysql数据库备份之主从同步配置

主从同步意义?

主从同步使得资料可以从一个数据库服务器复制到其他服务器上,在复制资料时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连线著主服务器,从服务器甚至可以通过拨号断断续续地连线主服务器。通过配置档案,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。机制

Mysql服务器之间的主从同步是基于二进位制日志机制,主服务器使用二进位制日志来记录数据库的变动情况,从服务器通过读取和执行该日志档案来保持和主服务器的资料一致。在使用二进位制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入资料或者只更新资料),预设会执行日志中的所有语句。配置主从同步的基本步骤

有很多种配置主从同步的方法,可以总结为如下的步

在主服务器上,必须开启二进位制日志机制和配置一个独立的ID 开启方法在每一个从服务器上,配置一个唯一的ID,建立一个用来专门复制主服务器资料的账号在开始复制程序前,在主服务器上记录二进位制档案的位置资讯如果在开始复制之前,数据库中已经有资料,就必须先建立一个数据快照(可以使用mysqldump汇出数据库,或者直接复制资料档案)配置从服务器要连线的主服务器的IP地址和登陆授权,二进位制日志档名和位置案例:将腾讯云服务器上的mysql备份到本地服务器中。

远端腾讯云服务mysql------------------------主

本地服务器daocker容器中的mysql -------从

第一步:

在本地服务器中的docker容器中安装 mysql_docker映象(mysql_docker_5722.tar档案地址 提取码:f9np)

将映象档案下载到本地,然后通过工具上传到本地服务器中(我使用的是以下工具进行上传和下载直接拖拽即可完成)

使用xshell进入本地服务器中检视档案是否上传到了home/ubuntu目录下

第一步:

还是在本地服务器中使用docker安装映象,执行 docker load -i mysql_docker_5722.tar

检查映象是否安装成功。

第二步:

在本地服务器中建立一个用于备份的虚拟环境

第三步:

在远端腾讯云服务器中的/home/ubuntu目录中建立一个mysql_slave目录,进入该目录在建立一个data目录

第四步:

将远端腾讯云服务器中的mysql配置资讯复制到上面建立的mysql_slave目录中 执行命令:cp -r /etc/mysql/mysql.conf.d ./

第五步:

进入mysql.conf.d目录中对mysqld.cnf档案进行编辑(注意,这里我复制过来的所有配置相当于从服务器中的配置,因为后面我会将整个mysql_slave资料夹传到我本地服务器中)

修改内容如下:

注意server-id 一定不能重复

第六步:

接下来,我们就将上述mysql_slave资料夹传到我本地服务器中(通过下面的软件将mysql_slave下载到电脑本地,然后在通过这个软件上传到本地的Linux系统)

第七步:

在本地Linux系统中建立docker容器

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v /home/ubuntu/mysql_slave/data:/var/lib/mysql -v /home/ubuntu/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d mysql:5.7.22

第八步:

测试上面建立的容器检视原始数据库中资讯

mysql -uroot -pmysql -h 127.0.0.1 --port=8306

第九步:

备份主服务器原有资料到从服务器

在远端腾讯云服务器中执行数据库备份命令:备份主服务器原有资料到从服务器$ mysqldump -u使用者名称 -p密码 --all-databases --lock-all-tables > ~/master_db.sql

--all-databases :汇出所有数据库--lock-all-tables :执行操作时锁住所有表,防止操作时有资料修改~/master_db.sql :汇出的备份资料(sql档案)位置,可自己指定同时将主服务器中备份的master_db.sql档案上传到本地Linux系统中

先从远端腾讯云服务器(主)下载到本地

在从本地上传到Linux系统中(从)

第十步:

进入本地服务器(从)在docker容器中汇入资料:mysql -uroot -pmysql -h127.0.0.1 --port=8306

执行完成后,主数据库内容就备份到了从服务器中

第十一步:

登入远端腾讯云主服务器Ubuntu中的mysql,建立用于从服务器同步资料使用的账号

GRANT REPLICATION SLAVE ON *.* TO \'slave\'@\'%\' identified by \'[email protected]\';

重新整理许可权

FLUSH PRIVILEGES;

第十二步 获取主服务器的二进位制日志资讯

show variables like \'log_bin\';

SHOW MASTER STATUS;

SHOW MASTER STATUS;

第十三步:

在本地Linux系统中进入docker中的mysql,执行以下命令

change master to master_host=\'远端服务器IP(主)\', master_user=\'上面建立授权的使用者名称\', master_password=\'上面建立授权的密码\',master_log_file=\'对应上面File\', master_log_pos=对应上面的Position;

master_host:主服务器Ubuntu的ip地址master_log_file: 前面查询到的主服务器日志档名master_log_pos: 前面查询到的主服务器日志档案位置第十四步:

启动slave服务器,并检视同步状态

start slave;

show slave status G

检查状态:show slave status G

如果标记的地方两个引数都是yes说明就启动成功了。

后面就可以测试了,在远端的服务器mysql中建立库获取操作表,再到本地检视是否也发生变化。只要数据库内容保持一致,说明就配置成功了。

如果你喜欢我的文章,那麻烦请关注我的公众号,威信搜寻 "Java架构研究室”,公众号重点分析架构师技术,每日干货好文推送,谢谢大家的支援。

更多精彩可以点选检视更多来了解!

2019-12-24 21:51:00

相关文章