简介

MySQL的主从复制(Replication),可以保持两台MySQL数据库的内容一致。因为其同步过程是异步的,所以备份数据库上做任何操作,都不会影响主数据库的性能。对游戏后台数据库而言,这是一个重大的优势:对备份数据库的查询、备份等操作都不会影响游戏的线上运行。配置主从复制有许多教程,但都很繁琐。我根据官方文档,总结出一个简单的配置流程。

配置

  • 线上运行的数据库,称之为Master服务器;备份的数据库,称之为Slave服务器

  • 分别修改两台服务器上的MySQL配置文件/etc/mysql/my.cnf:

    • Master服务器上加入这两行(直接去掉注释即可):

        server-id = 1
      log_bin = /var/log/mysql/mysql-bin.log
    • 然后重启MySQL:

       service mysql restart
    • Slave服务器加入这一行:

        server-id = 2
    • 然后重启MySQL:

        service mysql restart
  • 把Master数据库备份传给Slave数据库:

    • 方法一:MyISAM格式可以直接拷贝,速度快:

      • 在Master服务器上备份数据库,可以只有指定的数据库,不同步mysql库:

          mkdir /masterdb
        mysqlhotcopy --resetmaster --flushlog --addtodest --regexp=<数据库匹配正则表达式> /masterdb
      • 如果原来已经设置过slave,现在要恢复数据,那么

        • 先在Slave服务器上mysql中停止slave模式并重置:

            stop slave;
          reset slave;
        • 然后关闭mysql:

            stop mysql
        • 删除原有同名的数据库。

      • 停止mysql后,把备份的Master数据库目录传到Slave服务器上的mysql目录中,可以用scp命令拷贝:

          scp -r -P <端口> /masterdb/* root@<IP地址>:/Jpcq/MySQL/
      • 拷贝到Slave的文件需要修改owner:

          chown -R mysql:mysql *
      • 修改Slave的my.cnf文件,禁止同步mysql库:

          replicate-ignore-db=mysql
      • 启动mysql:

          start mysql
      • 重新开启slave模式,在mysql中执行:

          change master to master_host='<Master IP地址>', master_user='<用户名>', master_password='<密码>';
        start slave;
    • 方法二:使用mysqldump,通用,但是慢:

      • 在Master服务器上备份数据库:

          mysqldump --all-databases --master-data >apply_slave.sql
      • 把备份文件dbdump.db传到Slave服务器上,恢复数据库:

          mysql <apply_slave.sql
      • 在Slave服务器上开启slave模式,在mysql中执行:

          change master to master_host='<Master IP地址>', master_user='<用户名>', master_password='<密码>';
        start slave;

维护

  • Slave显示同步状态:

      show slave status\G;
  • 显示进程列表:

      show processlist\G;
  • Master显示正在同步的Slaves:

      show slave hosts;
  • Master显示最新binlog位置:

      show master status;

MySQL 5.5 - 5.7的改进

  • MySQL 5.5的主从复制是单线程的,性能受限。
  • MySQL 5.6的不同数据库可以并行,单个数据库还是顺序执行的。
  • MySQL 5.7不再受限制,所有Master数据库并行执行的事务,Slave也可以并行执行。
  • MySQL 5.7的Slave还支持从多个Master同步数据库。

MySQL 5.5主从复制(Replication)的更多相关文章

  1. MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  2. MySQL数据的主从复制、半同步复制和主主复制详解-转

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  3. Mysql的ssl主从复制+半同步主从复制

    Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...

  4. 003.MySQL高可用主从复制新增slave

    一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 17 ...

  5. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!

    MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!2017年06月15日 19:59:44 蓝色-鸢尾 阅读数:2062版权声明:本文为博主原创文章,如需转 ...

  6. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变

    [Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...

  7. 为什么mysql要做主从复制?

    为什么MySQL要做主从复制(读写分离)? 通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低. 为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主 ...

  8. MySQL 5.6 GTID Replication【转】

    一. MySQL 5.6引入了GTID的概念,那么GTID是何方神圣?其实也不复杂,就是一个全局事务标示符.使用GTID时,每次事务提交都会在binlog里生成1个唯一的标示符,它由UUID和事务ID ...

  9. MySQL 5.5 主从复制

    MySQL 5.5 主从复制的原理.过程   分为同步复制和异步复制,实际复制架构中大部分为异步复制.复制的基本过程如下:  1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指 ...

  10. maria(mysql)的主从复制

    一.mariadb的基本操作 1.远程连接 mysql -uroot -p -h 127.0.0.1 mysql -uroot -p -h 192.168.226.128 2.赋予远程连接的权限 gr ...

随机推荐

  1. Educational Codeforces Round 61 C 枚举 + 差分前缀和

    https://codeforces.com/contest/1132/problem/C 枚举 + 差分前缀和 题意 有一段[1,n]的线段,有q个区间,选择其中q-2个区间,使得覆盖线段上的点最多 ...

  2. mongodb知识积累

    1: 安装mongodb https://www.cnblogs.com/zhangdaicong/p/7492494.html 2:配置文件 vi /etc/mongodb.conf https:/ ...

  3. 使用Docker镜像

    1     使用Docker镜像 1.1   获取镜像 命令格式:docker pull NAME[:TAG] NAME为镜像仓库的名称 TAG为镜像的标签(表示版本号) 描述一个镜像需要包括:名称+ ...

  4. s5-13 RIP 为什么会 衰败

    DV路由可能遇到的问题 路由环路( routing loop) 计数到无穷问题( Count to infinite) 收敛慢的问题( slow Convergence ) 相信错误的路由信息导致 好 ...

  5. 用mathematica求六元一次方程组且方程个数比变量个数少一个

    问题详见知乎:https://www.zhihu.com/question/68000713 我的问题:有5个方程,6个变量,其实我是想求出来de1=(系数)*dS1的形式,系数有Cij组成,Cij为 ...

  6. weblogic配置集群(二)

    接到上一篇博文来 weblogic配置集群(一) 三.启动管理server 按照上面的方式创建好域后,在D:\Oracle\Middleware\user_projects\domains\gszhD ...

  7. linux 添加本地yum源

    1.查看自己是否安装了 yum rpm -qa|grep yum 查看yum配置文件 2.创建一个文件夹 用于挂载光盘 这里创建到/media下 取名叫cdrom mkdir /media/cdrom ...

  8. 修改input标签type=file类型的文字

    <form name="form" id="form" method="post" enctype="multipart/f ...

  9. Windows 95 输入法编辑器

    Windows 95 输入法编辑器 翻译:戴石麟译自微软的MSDN DDK 关于Windows 95的多语言IME(输入法编辑器) 在Windows 95中,IME以动态连接库(DLL)的形式提供,与 ...

  10. python_列表、元组、字典、集合对比

    列表.元组.字典.集合 列表.元组.字典.集合对比 比较项 列表 元组 字典 集合 类型名称 list tuple dict set 定界符 [] () {} {} 是否可变 是 否 是 是 是否有序 ...