一、前言
MariaDB数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,还能实现数据库的拓展,多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能,为大规模企业MariaDB集群提供了有利的技术支撑.
源码编译安装数据库教程 https://www.xxshell.com/4000.html
HeartBeat双机VIP配置 https://www.xxshell.com/2549.html
二、 主-从 同步配置
基于一台服务器的数据复制,故得名单机热备,主-备 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)
从数据库执行
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
三、主-主 同步配置(双机)
基于两台服务器的复制方式较多,故得名双机热备,双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即 Active-Standby和Standby-Active状态),这里需要注意的是主-主同步配置,其实就是两台MariaDB数据库互为主从,所以,要在两台主机间作两次相同的操作
两台数据库同时执行
1.安装MariaDB,设置初始密码,启动服务,并设置开机自启动,这里的配置步骤应在两台主机上同步执行
yum install -y mariadb mariadb-server
systemctl restart mariadb
mysql_secure_installation
2.将 DB1 的数据拷贝到 DB2 上,实现数据的一致性,(注意:这里应先锁定表结构,防止数据不一致)
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.修改DB主配置文件(注意:两台都要修改),开启二进制日志和制定服务器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
DB1数据库执行
1.进入 DB1 数据库,创建用于从数据库登陆的账号和密码
grant replication slave on *.* to '用户名'@'%' identified by '密码'; #创建用于从数据库登陆的用户
show master status;
2.进入 DB2 数据库,同步数据
change master to master_host='主服务器IP',master_user='授权账号',master_password='密码',master_log_file='二进制文名',master_log_pos=文件空间大小;
start slave; #启动同步功能
show slave status\G; #查看同步状态
DB2数据库执行
1.进入 DB2 数据库,创建用于从数据库登陆的账号和密码
grant replication slave on *.* to '用户名'@'%' identified by '密码'; #创建用于从数据库登陆的用户
show master status; #查看二进制文件名
2.进入 DB1 数据库,同步数据
change master to master_host='主服务器IP',master_user='授权账号',master_password='密码',master_log_file='二进制文名',master_log_pos=文件空间大小;
start slave; #启动同步功能
show slave status\G; #查看同步状态