mysql备份和半同步
一,自带的软件备份MySQLdump
1.mysqldump -uroot -p123456 --single-transaction --master-data=2 --all-databases > /root/date +%F
.sql
--single-transaction,想当于启了镜像,数据库可正常写入。
--master-data=2 记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的用于二进制日志恢复
--all-databases 备份全部数据库,--databases cs1 只备份cs1数据库,可以备份多个,空格隔开
如果有主从复制且是基于gtid的 要加--set-gtid-purged=off
head -30 2019-09-06.sql |grep MASTER_LOG_FILE ##查看二进制文件所在位置
2.使用二进制文件,生成恢复文件
二进制开启方法,在/etc/my.cnf 里添加 log_bin=(这里是路径名加名称),现网建议用网络盘,这个文件非常重要
先在刚才的备份过的数据里再写点数据
这里我用mysql -uroot -p123456 -e 'show master status;' 查看了二进制文件位置已经发生了变化,应为我增添了数据,我们在数据库做的操作都会记录在二进制日志文件当中,如果数据库蹦了,我们用刚才备份记录的位置对二进制文件进行恢复,就能取得刚才备份过后到数据库蹦的这一时间的数据,在加上先前的备份就可以取得完整的数据
mysqlbinlog --start-position=245 /var/lib/mysql/log_bin.000008 >logbin.sql
#指定位置,二进制文件位置,恢复到那个目录起什么名称
3.恢复数据库
2019-09-06.sql 是第一次完整备份的,先恢复这,再恢复后面二进制文件生成的备份数据。
成都创新互联公司专业为企业提供庆安网站建设、庆安做网站、庆安网站设计、庆安网站制作等企业网站建设、网页设计与制作、庆安企业网站模板建站服务,10年庆安做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
这样就完成数据完整备份恢复了,这种自带的之适用于小型备份,1G以内的
二.使用xtrabackup做完整和增量备份
1.先安装
yum install percona-xtrabackup.x86_64 -y
#软件在epel源里,在部署好epel源
2.完整备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password="" --backup /root
上图是软件正确执行的返回结果,成功后root 目录下会有个以日期命令的目录,里面就是备份了
3.增量备份
innobackupex --user=root --password= --incremental /root/ --incremental-basedir=/root/2019-09-06_11-33-50
#--incremental /root/ 指定备份的路径 --incremental-basedir= 这后面写上次备份的目录
4.对数据做同步,合并增量备份
innobackupex --apply-log --redo-only /root/2019-09-06_11-33-50/
#因为备份需要时间,备份的过程当中新的事物可能没有同步到数据里,这个命令就是把当前的新事物同步到数据里,如果是最后一个备份,可做可不做,这边后面还有一个增量备份,所用必须要做
innobackupex --incremental --apply-log --redo-only /root/2019-09-06_11-33-50/ --incremental-dir=/root/2019-09-06_11-40-39
#将后面增量备份的数据附加到完整数据里,这样完整数据就包含了第二次备份的数据了,恢复时只恢复完整数据即可,命令第一个路径是完整备份的路径
5.恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /root/2019-09-06_11-33-50/
#直接恢复完整备份即可
ps 恢复的时候,mysql的根目录不能有文件,需要删了,恢复完了注意修改属主,如果启动不起来看看sulinux 是否关闭
三.半同步
1.先配置主节点配置文件
vim /etc/my.cnf
[mysqld]
skip_name_resolve=ON ##开启跳过名称解析
innodb_file_per_table=ON ##开启独立表空间
server_id=1 ##ID 唯一
log_bin=log-bin ##开启二进制日志 必须的
rpl_semi_sync_master_enabled = ON #开机启动半同步,如果模块还没安装,先注释掉
从节点
[mysqld]
skip_name_resolve=ON
innodb_file_per_table=ON
server_id=2
relay_log=relay-log ##开启中继日志,从节点必须开的
rpl_semi_sync_slave_enabled = ON ; #开机启动半同步,如果模块还没安装,先注释掉
2.安装半同步模块
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
#安装模块
set global rpl_semi_sync_master_enabled = ON;
#设置半同步状态为启动 注意如果要让它自动启动,要把它写到配置文件里
SHOW GLOBAL VARIABLES LIKE '%semi%';
#查看状态
从节点
配置下主从
CHANGE MASTER TO MASTER_HOST='192.168.0.14', MASTER_USER='rep', MASTER_PASSWORD='123456', MASTER_LOG_FILE='log_bin.000002', MASTER_LOG_POS=245;
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
#安装从节点模块
set global rpl_semi_sync_slave_enabled = ON ;
#启动模块
SHOW GLOBAL VARIABLES LIKE '%semi%';
#看下启动模块启动状态
start slave;##启动主从复制
show slave status\G; #查看主从复制状态
3.查看状态
SHOW GLOBAL STATUS LIKE '%semi%'
status 状态 为 ON 说明 半同步配置成功
文章题目:mysql备份和半同步
本文地址:http://ybzwz.com/article/jpchhd.html