zoukankan      html  css  js  c++  java
  • MySQL数据库备份之主从同步配置

    墨墨导读:本文介绍MySQL数据库备份之主从同步配置,通过将腾讯云服务器上的MySQL备份到本地服务器中这个例子来做出展开解释。


    主从同步意义?



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

    机制



    MySQL服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。

    在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。

    配置主从同步的基本步骤



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

    • 在主服务器上,必须开启二进制日志机制和配置一个独立的ID开启方法

    • 在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号

    • 在开始复制进程前,在主服务器上记录二进制文件的位置信息

    • 如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用MySQLdump导出数据库,或者直接复制数据文件)

    • 配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置

    案例:将腾讯云服务器上的MySQL备份到本地服务器中。

    远程腾讯云服务MySQL------------------------主

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

    第一步:

    在本地服务器中的docker容器中安装 mysql_docker镜像
    将镜像文件下载到本地,然后通过工具上传到本地服务器中


    640?wx_fmt=png


    使用xshell进入本地服务器中查看文件是否上传到了home/ubuntu目录下


    640?wx_fmt=png


    第一步:

    还是在本地服务器中使用docker安装镜像


    640?wx_fmt=png


    检查镜像是否安装成功。


    640?wx_fmt=png


    第二步:

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


    640?wx_fmt=png


    第三步:

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


    640?wx_fmt=png


    第四步:

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


    640?wx_fmt=png


    第五步:

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

    修改内容如下:

    640?wx_fmt=png

    640?wx_fmt=png


    注意server-id 一定不能重复


    第六步:

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


    640?wx_fmt=png

    640?wx_fmt=png


    第七步:

    在本地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

    640?wx_fmt=png


    第八步:

    测试上面创建的容器查看原始数据库中信息

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

    640?wx_fmt=png


    第九步:

    备份主服务器原有数据到从服务器

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


    640?wx_fmt=png

      

    • all-databases :导出所有数据库

    • lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改

    • ~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定

    同时将主服务器中备份的master_db.sql文件上传到本地Linux系统中

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

    640?wx_fmt=png


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

    640?wx_fmt=png


    第十步:

    进入本地服务器(从)在docker容器中导入数据:mysql -uroot -pmysql -h127.0.0.1 --port=8306 < ~/master_db.sql


    640?wx_fmt=png


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

    640?wx_fmt=png


    第十一步:

    登入远程腾讯云主服务器Ubuntu中的mysql,创建用于从服务器同步数据使用的帐号

    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'Slave@mysql520';


    刷新权限

    FLUSH PRIVILEGES;

    640?wx_fmt=png


    第十二步  获取主服务器的二进制日志信息

    show variables like 'log_bin';
    SHOW MASTER STATUS;
    SHOW MASTER STATUS;

    640?wx_fmt=png


    第十三步:

    在本地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说明就启动成功了。


    640?wx_fmt=png


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


    出处:https://www.cnblogs.com/wendj/p/11023497.html

    编辑:尹文敏


    资源下载

    关注公众号:数据和云(OraNews)回复关键字获取

    2018DTCC , 数据库大会PPT

    2018DTC,2018 DTC 大会 PPT

    ENMOBK《Oracle性能优化与诊断案例》

    DBALIFE ,“DBA 的一天”海报

    DBA04 ,DBA 手记4 电子书

    122ARCH ,Oracle 12.2体系结构图

    2018OOW ,Oracle OpenWorld 资料

    产品推荐

    云和恩墨Bethune Pro2企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!


    640?wx_fmt=jpeg


    云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。


    640?wx_fmt=jpeg

    云和恩墨大讲堂 | 一个分享交流的地方

    长按,识别二维码,加入万人交流社群


    640?wx_fmt=jpeg

    请备注:云和恩墨大讲堂

  • 相关阅读:
    配置Gitlab pages和Gitlab CI
    程序员不应该错过的 6大导航
    Ice简介+Qt代码示例
    Android开发者的Anko使用指南(四)之Layouts
    三种方式绘制图片
    产品-(前后端)开发-测试的见解
    01_Docker概念简介、组件介绍、使用场景和命名空间
    Docker 创建 Confluence6.12.2 中文版
    读再多懂再多的鸡汤,不如每天敲码思考总结
    Postman Mock Server
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312040.html
Copyright © 2011-2022 走看看