概述

适用:两台服务之间实现备份
功能:文件备份、定时执行、数据库备份
服务器: 两台 centos 7 服务器
注1: 服务器(主-base): 192.168.0.3 服务器(从-backup):192.168.0.2
注2: 主服务器自动备份到从服务器

安装基础工具

一、安装rsync及两台机器进行文件同步

1) 安装rsync

[root@wkjhost ~]# yum -y install rsync

2) rsync自启动

[root@wkjhost ~]# systemctl enable rsyncd.service

3) 修改rsync配置文件(修改或者追加)

[root@wkjhost ~]# vi /etc/rsyncd.conf

 uid = root
 gid = root
 use chroot = yes
 max connections = 4
 pid file = /var/run/rsyncd.pid
 exclude = lost+found/
4) 启动rsync

[root@wkjhost ~]# systemctl start rsyncd.service

4) 安装 crontabs服务并设置开机自启

[root@wkjhost ~]# yum install crontabs
[root@wkjhost ~]# systemctl enable crond
[root@wkjhost ~]# systemctl start crond

服务器同步部署

一、实现免密登录(备份服务器可以免密登录基础服务器)

1) 生成ssh密钥(可以直接下一步)

[root@backup ~]# ssh-keygen -t rsa

2) 复制公钥到基础服务器

[root@backup ~]# ssh-copy-id root@192.168.0.3

二、文件同步脚本

1) 书写rysnc-sys脚本

[root@backup ~]# vi /var/crontab-scripts/rsync-sys.sh

#!/bin/bash
# /var/crontab-scripts/rsync-sys.sh
# base system sync to backup system
#from base system gogs-repositories to backup system
rsync -r 192.168.0.1:/home/git/test /home/git
2) 启动定时任务(每5分钟同步一次)

[root@backup ~]# crontab -e

*/5 * * * * /var/crontab-scripts/rsync-sys.sh 

二、mariadb开启主从分布(注:两台机器的mariadb的root用户密码:root) - 主从复制方式

1) 主库(master)开启(设置主库记录操作日志)

设置主mariadb操作日志记录并标记为主mariadb
[root@base~]# vi /etc/my.cnf.d/server.cnf

[mysqld]
server_id=1                 #设置当前服务器的ID号(1主Mariadb,2从Mariadb)
log_bin=mariadb-bin         #启动二进制日志并指定文件名
skip_name_resolve=on        #跳过主机名解析。在CentOS 6自带的mysql后面的=on不用写
innodb_file_per_table=on    #innodb的每个表是用单独的文件

登录数据库(用户名: root 密码: root)
[root@base~]# mysql -uroot -proot
创建从mariadb登录主服务器用户(用户:backupuser 密码:backup_pwd )
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON . TO 'backupuser'@'192.168.0.%' IDENTIFIED BY 'backup_pwd';
刷新权限表
MariaDB [(none)]> flush privileges;
查看状态主mariadb状态
MariaDB [(none)]> show master status;
主mariadb状态图.png

从mariadb需要使用(日志文件名(File): mariadb-bin.00001 , 位置(Position): 245)

1) 从库(slave)开启

设置主mariadb操作日志记录并标记为主mariadb
[root@backup ~]# vi /etc/my.cnf.d/server.cnf

[mysqld]
server_id=2          #设置当前服务器的ID号(1主Mariadb,2从Mariadb)
relay_log=relay-log  #启用中继日志,保存当前的中继日志中主节点二进制文件的名字和位置。
read_only=on         #禁止用户写入数据,这一项的管理员和复制重放无效。

重启mariadb服务
[root@backup ~]# systemctl restart mariadb
登录数据库(用户名: root 密码: root)
[root@backup ~]# mysql -uroot -proot
从服务器启动read_only,但仅对非SUPER权限的用户有效
MariaDB [(none)]> flush tables with read lock;
连接主mariadb, 需要使用到主mariadb信息【创建的用户、主mariadb状态信息】
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.0.3',MASTER_USER='backupuser',MASTER_PASSWORD='backup_pwd ',MASTER_LOG_FILE='mariadb-bin.00001',MASTER_LOG_POS=245;
启动从mariadb线程
MariaDB [(none)]> start slave;
查看从mariadb线程是否正确
MariaDB [(none)]> show slave stgatus \G;
从服务器状态.png

Slave_IO_Running是复制线程,Slave_SQL_TRunning是重放线程,两个值都为Yes时候配置成功,否则看截图下面Error的那几个字段,比如连接不成功,密码错误等
测试主从复制是否生效
在主maridb中创建数据库,查看从mariadb是否已经同步

注:如果已经存在的数据库需要要首先导入之后再开启主从复制

二、mariadb双主复制:互为主从:两个节点各自都要开启binlog和relay log

步骤都差不多,只是需要注意几个事项:

1、server_id必须要使用不同值
2、均启用binlog和relay log
3、存在自动增长id的表,为了使得id不相冲突,需要定义其自动增长方式
4、都授权有复制权限的用户账号
5、各把对方指定为主节点

添加节点代码

定义一个节点使用奇数id

[mysqld]
auto_increment_offset=1         #自动增长ID初始数
auto_increment_increment=2      #每次增长几位数

另一个节点使用偶数id

[mysqld]
auto_increment_offset=2
auto_increment_increment=2

标签: none

添加新评论