MariaDB数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,还能实现数据库的拓展,多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能,为大规模企业MariaDB集群提供了有利的技术支撑.

MariaDB 主-从 同步配置

基于一台服务器的数据复制,故得名单机热备,主-备 Active-Standby

主-备方式,即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态),主数据库数据更新后,备份服务器同步数据只本机

◆两台同步执行◆

1.安装Mariadb,设置初始密码,启动服务,并设置开机自启动,这里的配置步骤应在两台主机上同步执行

yum install -y mariadb mariadb-server

systemctl restart mariadb

mysql_secure_installation

2.修改MariaDB主配置文件,写入log-bin参数开启二进制日志文件,然后写入server-id指定本台MariaDB服务器的ID号(注意:这里主从不要重复)

vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin            #开启二进制日志文件
server-id=12 #本台MySQL服务器ID(主从不能重复) systemctl restart mariadb #重启生效

◆主数据库执行◆

1.进入主MariaDB数据库,授权给从数据库登陆的账号,这里显示二进制日志文件大小并记录下来

grant replication slave on *.* to "用户名"@'%' identified by "密码";    #创建用于从服务器登陆的账号

show master status;                                                   #显示日志状态

MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 245 | | |
+------------------+----------+--------------+------------------+
row in set (0.00 sec)

◆从数据库执行◆

1.进入从MariaDB数据库,使用主数据库授权的用户名,密码,以及相应的日志文件名称 master_log_file,和日志文件位置 master_log_pos,此处在主数据库上获取即可

change master to master_host='服务器IP',master_user='授权账号',master_password='密码',master_log_file='日志文件',master_log_pos=文件位置;

start slave;             #启用同步

show slave status\G;     #查看同步状态

注意:两个状态同时开启即可

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

## MariaDB 主-主 同步配置

基于两台服务器的复制方式较多,故得名双机热备,双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即 Active-Standby和Standby-Active状态),这里需要注意的是主-主同步配置,其实就是两台MariaDB数据库互为主从,所以,要在两台主机间作两次相同的操作

◆两台同步执行◆

1.安装MariaDB,设置初始密码,启动服务,并设置开机自启动,这里的配置步骤应在两台主机上同步执行

yum install -y mariadb mariadb-server

systemctl restart mariadb

mysql_secure_installation

2.将 MariaDB1 的数据拷贝到 MariaDB2 上,实现数据的一致性,(注意:这里应先锁定表结构,防止数据不一致)

flush tables with read lock;                      #锁定数据表为只读模式

mysqldump -u root -p --all-databases >back.sql    #备份数据库

scp back.sql root@192.168.1.13:/root              #将数据传递到远程主机

unlock tables;                                    #解除表锁定

mysql -uroot -p <back.sql                         #从数据库恢复数据

3.修改MariaDB主配置文件(注意:两台都要修改),开启二进制日志和制定服务器ID号

vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin                                  #开启二进制日志
server-id=10 #指定服务器ID号(两台不允许重复)
replicate-do-db=test #要同步的数据库
binlog-ignore-db=mysql #不需要同步的数据库
binlog-ignore-db=information_schema #不需要同步的数据库
auto-increment-increment=2 #每次自增长2
auto-increment-offset=1 #自增长从1开始 systemctl restart mariadb

◆MariaDB1 执行◆

1.进入 MariaDB1 数据库,创建用于从数据库登陆的账号和密码

grant replication slave on *.* to '用户名'@'%' identified by '密码';    #创建用于从数据库登陆的用户

show master status;                                                   #查看二进制文件名

2.进入 MariaDB2 数据库,同步数据

change master to master_host='主服务器IP',master_user='授权账号',master_password='密码',master_log_file='二进制文名',master_log_pos=文件空间大小;

start slave;            #启动同步功能

show slave status\G;    #查看同步状态

◆MariaDB2 执行◆

1.进入 MariaDB2 数据库,创建用于从数据库登陆的账号和密码

grant replication slave on *.* to '用户名'@'%' identified by '密码';    #创建用于从数据库登陆的用户

show master status;                                                   #查看二进制文件名

2.进入 MariaDB1 数据库,同步数据

change master to master_host='主服务器IP',master_user='授权账号',master_password='密码',master_log_file='二进制文名',master_log_pos=文件空间大小;

start slave;            #启动同步功能

show slave status\G;    #查看同步状态

## MariaDB 主-主-从 同步配置

主-主-从,字面意思就是,两个主一个从,主要用于数据备份,一次性备份两个主数据库资源,这样一个从数据库,就可以同时备份多个主数据库了,节约了宝贵的服务器资源

◆两台主数据库执行◆

1.两台主服务器都需要安装MySQL初始化并设置密码

yum install -y mariadb mariadb-server

systemctl restart mariadb

mysql_secure_installation

2.两台主服务器都应配置以下内容(两台主MySQL都需要配置)

vim /etc/my.cnf              #修改配置文件

写入以下内容↓
log-bin=mysql-bin #开启二进制日志
server-id=147 #服务器ID号 systemctl restart mariadb #重启服务

3.登陆主MySQL并创建用户从服务器登陆的用户 (两台主MySQL都需要配置)

mysql -uroot –p                                                         #登陆MySQL

grant replication slave on *.* to '授权用户'@'%' identified by '密码';    #创建从服务器用户

show master status;                                                     #显示日志状态

◆从数据库应执行的步骤◆ 切记此MySQL不能启动

1.修改从MySQL主配置文件

vim /etc/my.cnf

写入以下内容↓

[mysqld_multi]
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
log=/tmp/multi.log [mysqld147] #名称后面加数字,后期启动用(不应相同)
port=3306 #端口号(不应相同)
pid-file=/var/lib/mysqla/mysqld.pid #MySQL进程号保存位置
datadir=/var/lib/mysqla #数据文件保存位置
socket=/var/lib/mysqla/mysql.sock #指定登陆套接字
server-id=110 #ID号,同一主从环境不能相同
user=mysql #MySQL登陆用户名 [mysqld148] #名称后面加数字,后期启动用(不应相同)
port=3307 #端口号(不应相同)
pid-file=/var/lib/mysqlb/mysqld.pid #MySQL进程号保存位置
datadir=/var/lib/mysqlb #数据文件保存位置
socket=/var/lib/mysqlb/mysql.sock #指定登陆套接字
server-id=110 #ID号,同一主从环境不能相同
user=mysql #MySQL登陆用户名

2.初始化数据库

mysql_install_db --datadir=/var/lib/mysqla --user=mysql    #初始化数据库a
mysql_install_db --datadir=/var/lib/mysqlb --user=mysql #初始化数据库b

3.给相应目录赋予权限

cd /var/lib/
chown -R mysql:mysql /var/lib/mysqla/ #修改a文件权限
chown -R mysql:mysql /var/lib/mysqlb/ #修改b文件权限

4.启动相应服务器

mysqld_multi --defaults-file=/etc/my.cnf start 147    #开启147服务器
mysqld_multi --defaults-file=/etc/my.cnf start 148 #开启148服务器

5.登陆147和148数据库确定主从关系

mysql -P 3306 -S /var/lib/mysqla/mysql.sock    #登陆147数据库
mysql -P 3306 -S /var/lib/mysqlb/mysql.sock #登陆148数据库
change master to master_host='服务器IP',master_user='授权账号',master_password='密码',master_log_file='日志文件',master_log_pos=文件位置;

start slave;									#启用同步

show slave status\G;								#查看同步状态

参考文献:mysql5.7从入门到精通

MariaDB 主从同步与热备(14)的更多相关文章

  1. Docker部署Zabbix监控MariaDB主从同步(Percona Monitoring Plugins for Zabbix)

    一.安装Docker并部署Zabbix 建议先配置清华大学的docker-ce yum源,速度有保障:清华大学repo源 1.Zabbix Server节点配置 部署环境: [root@server0 ...

  2. MySQL数据库配置主从服务器实现双机热备

    转自:http://www.cnblogs.com/cchun/p/3712637.html 一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168 ...

  3. MySQL7.5.15数据库配置主从服务器实现双机热备实例教程

    环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...

  4. Mysql主从分离与双机热备超详细配置

    一.概述 本例是在Windows环境,基于一台已经安装好的Mysql57,在本机安装第二台Mysql57服务. 读完本篇内容,你可以了解到Mysql的主从分离与双机热备的知识,以及配置期间问题的解决方 ...

  5. MySQL5.7.15数据库配置主从服务器实现双机热备实例教程

    环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...

  6. mysql 主从同步(转)

    教程开始:一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作,安装MySQL 5.5.22  二.配置MySQL主服务器(19 ...

  7. oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)

    Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...

  8. 服务器较稳妥的磁盘阵列方案:RAID5+热备盘

    最近公司这边要整个数据中心,但是我们这边磁盘阵列的方案选择方面需要做好万全的测试 内部测试的服务器当初损坏的磁盘1个做的raid5直接换个新磁盘做替换rebuild就行了 但是现在想的方法是5+1的方 ...

  9. 搭建Mysql双机热备 (主从同步)

    准备两台centos7主机:10.0.18.132 master 10.0.18.136  slave 先把selinux关闭,iptables关闭  或者添加端口 132 master安装好Mysq ...

随机推荐

  1. zk实现分布式锁

    public interface lock { void getLock(); void unLock(); } public abstract class ZkAbstractLock implem ...

  2. 前端之前端介绍或html的常用标签1

    一 web服务器的本质 由浏览器发送一个请求.服务器接收到,然后在回应一个响应. 由于浏览器的不同,web服务器响应的内容不一定被浏览器接收. HTTP/1.1 201 OK\r\n\r\n需要发送的 ...

  3. 2018.11.24 poj3693Maximum repetition substring(后缀数组)

    传送门 后缀数组好题. 考虑枚举循环节长度lenlenlen. 然后考虑枚举循环节的起点来更新答案. 但是直接枚举每次O(n)O(n)O(n). 考虑枚举len∗k+1len*k+1len∗k+1作为 ...

  4. 字符串算法hash

    思路:给字符串做一个映射,两个元素相同,则他们的hash值必定相同. 注意:hash表必须是unsigned int类型,保证每个映射都是正数. 例题: Description 给出两个字符串W和T, ...

  5. (1)There's more to life than being happy

    https://www.ted.com/talks/emily_esfahani_smith_there_s_more_to_life_than_being_happy00:12 I used to ...

  6. java json注解

    (1)初级我们从几个简单的使用场景开始:重命名属性,忽略属性,以及修改属性所使用的类型.注意:下面的例子仅仅显示了成员属性(field properties),注解同样也可以用在成员方法(getter ...

  7. 【慕课网实战】Spark Streaming实时流处理项目实战笔记十之铭文升级版

    铭文一级: 第八章:Spark Streaming进阶与案例实战 updateStateByKey算子需求:统计到目前为止累积出现的单词的个数(需要保持住以前的状态) java.lang.Illega ...

  8. oss上传文件夹

    最近公司做工程项目,实现文件夹云存储上传. 网上找了很久,发现网上很多项目都存在相似问题,最后终于找到了一个符合我要求的项目. 工程如下: 这里对项目的文件夹云存储上传进行分析,实现文件夹上传,如何进 ...

  9. Docker网络简介

    Docker允许通过外部访问容器或则容器互联的方式来提供网络服务. 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或则-P参数来指定断开映射.当使用 -P 标记时, ...

  10. golang web sample

    一.学习想法 用两天的时间学习golang,但这次是先不看书的,直接写代码先. 我们常习惯边看书边学习写代码,但发现过程是比较缓慢的,所以我就先想写代码, 边写边查.就我们所知,web app一般是基 ...