线上系统和冷备系统同步单个表数据

线上数据同步冷备数据操作
为了保障系统的稳定及安全,我们公司采用了一整套的冷备系统,即当线上系统发生故障直接切换到备份系统,避免客户的访问故障。由于是两套完全独立的系统,因此会造成数据库里的数据不完全同步,虽然我们的开发人员在导入数据时会主备系统都会导,但是还是会有一定的差别,我们是在一定范围内是可以允许有一定的误差的,但是我们需要给用户提供服务,因此必须保证已有的用户可以登陆我们的系统,因此我们会不定时的手动去同步user表及其他几个表。
下面是我的一些具体操作步骤:
1.查看即将同步的表有多少条数据,以便我们后期确定是否同步成功:
select count(*) from 表明; ###最好两边都查一下
2.备份备份系统的表数据,以防误操作可以及时恢复:
mysqldump -uroot -p 数据库名 表名 > /data/mysqldata/表名.sql
3.从主系统导出数据:
select * into outfile '/tmp/outfile.txt' from 表名;
4.同步到被系统,我这里是先同步到我自己电脑在上传到备份系统:
sz /tmp/outfile.txt
如果没有安装sz的话请用:
centos系统:yum -y install lrzsz
ubuntu系统:apt-get -y install lrzsz
5.清空备份系统即将同步表的表数据,如果第一次同步可忽略这一步:
truncate table 表名;
如果失败请用:
delete * from 表名;
6.上传本机第4步下载到本机的数据到备份系统:
rz
如果报错,备份系统安装lrzsz
7.更改已经上传到备份系统文件的属主属组及存放位置
chown mysql.mysql outfile.txt
更改outfile.txt存放位置到mysql数据库目录。因为mysql是由mysql用户启动的,必然会报权限拒绝。
8.同步数据
load data infile '/data/mysqldata/outfile.txt' into table 表名 FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';
9.查看同步过来的表条数是否和主系统一样,如果一样即表示同步成功:
select count(*) from 表名;

posted @ 2017-10-23 17:32  爱热闹的杨小厨  阅读(274)  评论(0编辑  收藏  举报