服务器之间同步
概述
适用:两台服务之间实现备份
功能:文件备份、定时执行、数据库备份
服务器: 两台 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需要使用(日志文件名(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;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