MariaDB配置双主复制方案

本文环境

Debian 8

MariaDB 10.1.21

配置文件 1

修改服务器 1 上 mysql 配置文件 /etc/mysql/my.cnf

有些配置默认就存在的,如果你有洁癖,请先搜索,再添加配置项。

[mysqld]
server-id        = 1
log_bin         = /var/log/mysql/mariadb-bin
log_bin_index      = /var/log/mysql/mariadb-bin.index
binlog-do-db        = tudou1 #需要同步的数据库,这里同步tudou1和tudou2两个数据库
binlog-do-db        = tudou2
binlog-ignore-db     = mysql #忽略同步的数据库
log_slave_updates               #把从库的写操作记录到binlog中 (缺少之后,双主创建失败)
expire_logs_days  = 365         #日志文件过期天数,默认是 0,表示不过期
auto_increment_increment= 2       #设定为主服务器的数量,防止auto_increment字段重复
auto_increment_offset  = 1       #自增长字段的初始值,在多台master环境下,不会出现自增长ID重复

配置文件 2

[mysqld]
[mysqld]
server-id        = 2
log_bin         = /var/log/mysql/mariadb-bin
log_bin_index      = /var/log/mysql/mariadb-bin.index
binlog-do-db      = tudou1 #需要同步的数据库,这里同步tudou1和tudou2两个数据库
binlog-do-db      = tudou2
binlog-ignore-db     = mysql #忽略同步的数据库
log_slave_updates               #把从库的写操作记录到binlog中 (缺少之后,双主创建失败)
expire_logs_days  = 365         #日志文件过期天数,默认是 0,表示不过期
auto_increment_increment= 2       #设定为主服务器的数量,防止auto_increment字段重复
auto_increment_offset  = 2       #自增长字段的初始值,在多台master环境下,不会出现自增长ID重复

注意:

log slave updates 表示把从库的写操作记录到binlog中,缺少之后,双主创建失败。双主同步时该项必须有

binlog-do-db 需要同步的数据库,可写多个

binlog-ignore-db 表示忽略同步的数据库

创建同步账户

// 服务器 1

GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'server-2' IDENTIFIED BY 'repuser';
FLUSH PRIVILEGES;

// 服务器 2
GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'server-1' IDENTIFIED BY 'repuser';
FLUSH PRIVILEGES;

可以顺便在另一台服务器测试能不能登录,如果不能,把 bind-address 那行注释掉即可。

$ mysql -urepuser -prepuser -hserver-1

查看 master 状态

服务器 1 中

MariaDB [mysql]> show master status;
+--------------------+----------+--------------+------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000514 |   639 | xxxxxxxx   | mysql      |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

服务器 2 中

MariaDB [mysql]> show master status;
+--------------------+----------+--------------+------------------+
| File        | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000006 |   1057 | xxxxxxxx   | mysql      |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

设置同步

// 服务器 2

MariaDB [mysql]> CHANGE MASTER TO MASTER_HOST='server-1',MASTER_PORT=3306,MASTER_USER='repuser',MASTER_PASSWORD='repuser',MASTER_LOG_FILE='mariadb-bin.000514',MASTER_LOG_POS=639;

MariaDB [mysql]> START SLAVE;

// 服务器 1

MariaDB [mysql]> CHANGE MASTER TO MASTER_HOST='server-2',MASTER_PORT=3306,MASTER_USER='repuser',MASTER_PASSWORD='repuser',MASTER_LOG_FILE='mariadb-bin.000006',MASTER_LOG_POS=1057;

MariaDB [mysql]> START SLAVE;

// 完毕之后,分别执行

MariaDB [mysql]> SHOW SLAVE STATUS\G

如出现以下两项,则说明配置成功!

Slave_IO_Running: Yes
      Slave_SQL_Running: Yes

双主同步测试

在服务器 1 数据库中创建一个表,看看服务器 2 会不会出现,按照上面教程,如果没问题的话,就是可以同步的。

(0)

相关推荐

  • MySQL数据表字段内容的批量修改、清空、复制等更新命令

    最近遇到一点麻烦事,新安装的PHPwind6.0正式版社区在导入之前的会员帐号资料时,发现很多会员的mail地址貌似胡乱填写的,之前的PHPwind5.5版本没有开启mail地址验证功能,所以估计很多用户胡乱填写了email地址,所以我就想要求所有正式会员重新验证邮件地址来重新激活会员帐号,结果发现社区根本没有这项功能,挣扎了N久,数据库的会员资料数据表被反复安装=删除了好几遍,总算找到了一个批量修改的方法. 不过这样操作会连社区创建者的账号都改成未激活,所以要是不清楚还真的不敢动手. 在PHP

  • 简单谈谈MySQL的半同步复制

    简介 MySQL通过复制(Replication)实现存储系统的高可用.目前,MySQL支持的复制方式有: 异步复制(Asynchronous Replication):原理最简单,性能最好.但是主备之间数据不一致的概率很大. 半同步复制(Semi-synchronous Replication):相比异步复制,半同步复制牺牲了一定的性能,提升了主备之间数据的一致性(有一些情况还是会出现主备数据不一致). 组复制(Group Replication):基于Paxos算法实现分布式数据复制的强一致

  • MySQL复制表结构和内容到另一张表中的SQL语句

    1.复制表结构及数据到新表 复制代码 代码如下: CREATE TABLE 新表 SELECT * FROM 旧表 2.只复制表结构到新表 复制代码 代码如下: CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 即:让WHERE条件不成立. 方法二:(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已经支持了) 复制代码 代码如下: CREATE TABLE 新表 LIKE 旧表 3.复制旧表的数据到新表(假设两个表结构一样) 复制代码

  • mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法

    需求:把一个表某个字段内容复制到另一张表的某个字段. 实现sql语句1: 复制代码 代码如下: UPDATE file_manager_folder f1LEFT OUTER JOIN file_manager_folder f2     ON f1.name = f2.name AND f2.parentId = 54SET f1.parentId = 54 WHERE f2.name IS NULL AND f1.id IN (1,2,3); 实现sql语句2: 复制代码 代码如下: upd

  • MySQL主从复制的原理及配置方法(比较详细)

    一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以便从服务器可以对其数据拷贝执行相同的更新. 将主服务器的数据拷贝到从服务器的一个途径是使用LOAD DATA FROM MASTER语句.请注意LOAD DATA FROM MASTER目前只在所有表使用MyISAM存储引擎的主服务器上工作.并且,该语句将获得全局读锁定. MySQL 使用3个线程来执行复制功能,其中1个在主服

  • mariadb的主从复制、主主复制、半同步复制配置详解

    主从服务器的时间要同步,数据库版本最好是一致的,以免造成函数处理.日志读取.日志解析等发生异常. 以下三个主从复制的设置是独立的. 注意防火墙和selinux的影响. 1.简单主从复制的实现 (1)主服务器的配置 1)安装mariadb-server [root@localhost ~]# yum -y install mariadb-server 2)编辑/etc/my.cnf文件 [root@localhost ~]# vim /etc/my.cnf 在[mysqld]段的最后添加以下内容

  • mysql中复制表结构的方法小结

    mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 或者 CREATE TABLE 新表 LIKE 旧表 2.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 3.复制旧表的数据到新表(假设两个表结构一样)  INSERT INTO 新表 SELECT * FROM 旧表 4.复制旧表的数据到新表(假设两个表结构不一样) INSERT INTO

  • MariaDB配置双主复制方案

    本文环境 Debian 8 MariaDB 10.1.21 配置文件 1 修改服务器 1 上 mysql 配置文件 /etc/mysql/my.cnf 有些配置默认就存在的,如果你有洁癖,请先搜索,再添加配置项. [mysqld] server-id = 1 log_bin = /var/log/mysql/mariadb-bin log_bin_index = /var/log/mysql/mariadb-bin.index binlog-do-db = tudou1 #需要同步的数据库,这里

  • MySQL 5.7双主同步部分表的实现过程详解

    前言 最近遇到一个需求,由于公司自身业务,两个数据库之间某些表需要实时双向同步数据,且其中任何一台数据库宕机都不会影响另外一台数据库,这里记录一下自己的技术调研,以便后期重构中使用.下面话不多说了,来一起看看详细的介绍吧. 安装MySQL5.7 推荐直接进官网 https://dev.mysql.com 下载yum源的方式安装,毕竟安全又省事. wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm y

  • MySQL双主(主主)架构配置方案

    在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入口,增加高可用.不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题. 主从同步复制原理 在开始之前,我们先来了解主从同步复制原理. 复制分成三步: 1. master将改变记录到二进制日志(binary

  • MySQL配置了双主,是如何避免出现数据回环冲突的

    不知道大家想过这个问题没有?如果配置了双主,是如何避免出现数据回环冲突的,因为在数据双活的设计方案中,这可以算是方案的核心设计思想之一. 如果主库触发SQL语句: insert into test_data(name) values('aa'); 那么Master1生成binlog,推送数据变化到Master2,在Master2上面生成relay log,然后交由sql thread进行变更重放,反之也是类似的流程,整个流程可以这样描述. 如果Master2消费了relay的数据,然后会产生bi

  • Mysql双主配置的详细步骤

    目录 前言 一.mysql配置文件 (1)节点A配置 (2)节点B配置 二.配置节点A为节点B的master(主从模式) 三.完成双主配置 四.测试 五.控制同步的库或表 六.一个账号多个IP 总结 前言 特点:在双主配置中,两台mysql互为主从节点.节点A是节点B的master,同时节点B也是节点A的master. 安装mysql步骤略过 一.mysql配置文件 (1)节点A配置 # 设置server-id,两节点必须不一样 server-id = 100 # 开启bin_log,模式为RO

  • MySQL高可用解决方案MMM(mysql多主复制管理器)

    一.MMM简介: MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本.MySQL本身没有提供replication failover的解决方案,通过MMM方案能实

  • StoneDB主从配置及切换实践方案

    目录 1.操作系统环境检查 1.1 关闭防火墙 1.2 关闭SELINUX 1.3 设置Swap分区 1.4 修改操作系统的限制 1.5 创建用户 2.部署MySQL 2.1 下载安装包 2.2 卸载mariadb 2.3 上传tar包并解压 2.4 创建目录 2.5 配置参数文件 my.cnf master slave1 2.6 初始化实例 2.7 启动实例 3.部署StoneDB 3.1 下载安装包 3.2 上传tar包并解压 3.3 检查依赖文件 3.4 创建目录 3.5 配置参数文件 m

  • 关于使用Keepalived实现Nginx的自动重启及双主热备高可用问题

    目录 1.概述 2.使用Keepalived实现Nginx的自动重启 2.1 借助Shell脚本,完成Nginx的重启 2.2 为脚本赋予运行权限 2.3 在Keepalived配置文件中增加配置 2.4 重启Keepalived服务 3.双主热备的搭建 3.1 双主热备概述 3.2 场景说明 3.3 修改A服务器配置 3.4 修改B服务器配置 3.5 重启两台服务器的Keepalived 3.6 设置DNS轮询 4.云服务器的负载均衡 5.综述 1.概述 之前我们使用Keepalived实现了

  • Ubuntu搭建Mysql+Keepalived高可用的实现(双主热备)

    Mysql5.5双机热备 实现方案 安装两台Mysql 安装Mysql5.5 sudo apt-get update apt-get install aptitude aptitude install mysql-server-5.5 或 sudo apt-cache search mariadb-server apt-get install -y mariadb-server-5.5 卸载 sudo apt-get remove mysql-* dpkg -l |grep ^rc|awk '{

随机推荐