首页 数据库 mysql教程 MYSQL双主全库同步复制的示例详解

MYSQL双主全库同步复制的示例详解

May 10, 2018 pm 03:37 PM
mysql 示例 详解

环境:

A、B两台服务器分别安装mysql-5.7.18服务端,配置成互为主从同步。

linux系统版本为CentOS7

A服务器ip:192.168.1.7   主机名:test1

B服务器ip:192.168.1.8   主机名:test2

(同一局域网下)

一、准备

  1.修改主机名

   命令:hostnamectl  set-hostname  xxx

   (查看主机名 命令:hostname)

  2.关闭防火墙

   1)查看防火墙状态

    命令:firewall-cmd  --state

    结果:running

   2)防火墙是运行状态,先关闭防火墙服务

    命令:systemctl  mask  firewalld

   3)关闭防火墙

    命令:systemctl  stop  firewalld

   4)检查防火墙状态

    命令:firewall-cmd  --state

    结果:not  running

  3.关闭selinux策略

   1)查看selinux运行状态

    命令:getenforce

    结果:Enforcing

    

   2)永久性关闭(需重启电脑),编辑selinux文件vi  /etc/sysconfig/selinux修改SELINUX=disabled

    

   3)为关闭状态

    

二、配置主服务器(master)从服务器(slave)

  1.打开A服务器的my.cnf文件vi  /etc/my.cnf,在文件的[mysqld]下添加如下内容

   server-id=1       #必须与其他服务器不同,且必须为1~232之间的正整数值

log-bin=mysql-bin
   log-bin-index=mysql-bin
登录后复制

   

   在B服务器my.cnf文件中的[mysqld]下添加上图内容,只更改server-id值即可。

server-id=2    
   log-bin=mysql-bin
   log-bin-index=mysql-bin
登录后复制

  2.在A服务器中的mysql安装路径下(rpm安装路径为/var/lib/mysql)创建全库备份文件all.sql。

   创建命令:

touch  /var/lib/mysql/all.sql
登录后复制

   备份命令:

[root@test1 mysql]# mysqldump -uroot -p123 --all-databases > /var/lib/mysql/all.sql
登录后复制

   把all.sql文件拷贝到B服务器中的某个路径下(以/var/lib/mysql路径为例)进行恢复。

   恢复命令:

[root@test2 /]# mysql -uroot -p123 < /var/lib/mysql/all.sql
登录后复制

  3.在A、B服务器的mysql中创建用户用于同步。

   创建用户:

mysql> create user &#39;tongbu&#39;@&#39;%&#39; identified by &#39;tongbu&#39;;
登录后复制

   授权:

mysql> grant all on *.* to &#39;tongbu&#39;@&#39;%&#39;;
登录后复制

   删除用户:

mysql> drop user &#39;用户名&#39;@&#39;%&#39;;
登录后复制

   A、B服务器用户创建完成后,测试用户相互是否可以远程登陆mysql。

[root@test1 /]# mysql -utongbu -ptongbu -h192.168.1.8
   [root@test2 /]# mysql -utongbu -ptongbu -h192.168.1.7
登录后复制

   测试无问题后重启A、B服务器中的mysql服务:[root@test /]# service mysqld restart

  4.设置A为主服务器,B为从服务器。

   1)查看A服务器mysql中的二进制日志名和偏移量值

    命令:mysql> show master status\G

    如下图

    

   2)在B服务器中配置连接服务器

mysql> stop slave;
    mysql> change master to
      -> master_host=&#39;192.168.1.7&#39;,
      -> master_user=&#39;tongbu&#39;,
      -> master_password=&#39;tongbu&#39;,
      -> master_log_file=&#39;mysql-bin.000024&#39;,
      -> master_log_pos=154;
    mysql> start slave;
登录后复制

    mysql> show slave status\G 输入此命令查看Slave_IO_Running和Slave_SQL_Running的值是否为Yes,如下图

    

  5.设置B为主服务器,A为从服务器。

   1)查看B服务器mysql中的二进制日志名和偏移量

    命令:mysql> show master status\G

    

   2)在A服务器中配置连接服务器。

mysql> stop slave;
    mysql> change master to
      -> master_host=&#39;192.168.1.8&#39;,
      -> master_user=&#39;tongbu&#39;,
      -> master_password=&#39;tongbu&#39;,
      -> master_log_file=&#39;mysql-bin.000027&#39;,
      -> master_log_pos=154;
    mysql> start slave;
    mysql> show slave status\G 查看Slave_IO_Running和Slave_SQL_Running的值是否为Yes
登录后复制

至此两台mysql数据库互为主从同步配置完成。

错误排查:

1.Slave_IO_Running状态错误

 检查MySQL> show slave status\G;时,Slave_IO_Running状态为Connecting错误,出现的原因主要分为三种,需要检查配置:

 1)网络不通

 2)账户权限配置错误,如密码不对、账号错误、地址错误

 3)二进制文件位置不对

2.主备数据冲突或不同造成的异常

 主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql配置文件指定略过此类异常并继续下条sql同步,这样可以避免很多主从同步的异常中断。打开/etc/ mysql下的my.cnf文件,在[mysqld]后添加如下代码:

slave-skip-errors = 1062,1032,1060
登录后复制

3. 跳过异常恢复同步

mysql >slave stop;
 mysql >SET GLOBAL sql_slave_skip_counter = 1;
 mysql >slave start;
登录后复制

以上是MYSQL双主全库同步复制的示例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

mysql用户和数据库的关系 mysql用户和数据库的关系 Apr 08, 2025 pm 07:15 PM

MySQL 数据库中,用户和数据库的关系通过权限和表定义。用户拥有用户名和密码,用于访问数据库。权限通过 GRANT 命令授予,而表由 CREATE TABLE 命令创建。要建立用户和数据库之间的关系,需创建数据库、创建用户,然后授予权限。

MySQL:初学者的数据管理易用性 MySQL:初学者的数据管理易用性 Apr 09, 2025 am 12:07 AM

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

忘记数据库密码,能在Navicat中找回吗? 忘记数据库密码,能在Navicat中找回吗? Apr 08, 2025 pm 09:51 PM

Navicat本身不存储数据库密码,只能找回加密后的密码。解决办法:1. 检查密码管理器;2. 检查Navicat的“记住密码”功能;3. 重置数据库密码;4. 联系数据库管理员。

MySQL 中的查询优化对于提高数据库性能至关重要,尤其是在处理大型数据集时 MySQL 中的查询优化对于提高数据库性能至关重要,尤其是在处理大型数据集时 Apr 08, 2025 pm 07:12 PM

1.使用正确的索引索引通过减少扫描的数据量来加速数据检索select*fromemployeeswherelast_name='smith';如果多次查询表的某一列,则为该列创建索引如果您或您的应用根据条件需要来自多个列的数据,则创建复合索引2.避免选择*仅选择那些需要的列,如果您选择所有不需要的列,这只会消耗更多的服务器内存并导致服务器在高负载或频率时间下变慢例如,您的表包含诸如created_at和updated_at以及时间戳之类的列,然后避免选择*,因为它们在正常情况下不需要低效查询se

navicat premium怎么创建 navicat premium怎么创建 Apr 09, 2025 am 07:09 AM

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。

Navicat for MariaDB如何查看数据库密码? Navicat for MariaDB如何查看数据库密码? Apr 08, 2025 pm 09:18 PM

Navicat for MariaDB 无法直接查看数据库密码,因为密码以加密形式存储。为确保数据库安全,有三个方法可重置密码:通过 Navicat 重置密码,设置复杂密码。查看配置文件(不推荐,风险高)。使用系统命令行工具(不推荐,需要对命令行工具精通)。

mysql怎么复制表 mysql怎么复制表 Apr 08, 2025 pm 07:24 PM

在 MySQL 中复制表需要创建新表、插入数据、设置外键、复制索引、触发器、存储过程和函数。具体步骤包括:创建具有相同结构的新表。将数据从原始表插入新表。设置相同的外键约束(如果原始表有)。创建相同索引。创建相同触发器(如果原始表有)。创建相同存储过程或函数(如果原始表使用了)。

mysql怎么查看 mysql怎么查看 Apr 08, 2025 pm 07:21 PM

通过以下命令查看 MySQL 数据库:连接到服务器:mysql -u 用户名 -p 密码运行 SHOW DATABASES; 命令获取所有现有数据库选择数据库:USE 数据库名;查看表:SHOW TABLES;查看表结构:DESCRIBE 表名;查看数据:SELECT * FROM 表名;

See all articles