1 环境治理中的数据库同步
在环境治理的过程中,数据库管理是不可或缺的,而数据库同步则是管理中的关键环节。
测试数据作为测试需求中的重要资产,数据的备份和同步工作至关重要。接下来,我将详细介绍如何进行数据的同步及备份。
2 如何同步数据库
1、通过Navicat进行数据或结构同步
工具 > 数据同步:用于同步结构和数据,选择源连接、源数据库和目标连接、目标数据库。
注:务必要确认源和目标,切勿反向同步!

工具 > 结构同步:仅同步结构,不同步数据,选择源连接、源数据库和目标连接、目标数据库。
注:务必要确认源和目标,切勿反向同步!

2、通过命令行方式备份及还原数据库
代码语言:javascript代码运行次数:0运行复制```javascript ##################################备份################################### 注:如果账号密码有特殊字符,需用斜杠做转义,如:qwe!# 1.1、备份单个数据库dbname到目录/tmp下面,并指定名称为dbname(dbname可任意更改) mysqldump -h127.0.0.1 -uroot -ppassword dbname > /tmp/dbname.sql;
1.2、备份数据库中的某个表t_a_table t_b_table,注:表名之间是空格
mysqldump -h127.0.0.1 -uroot -ppassword dbname t_a_table t_b_table > /tmp/dbname.sql;
1.3、备份多个数据库a_dbname b_dbname,注:加上--databases参数,数据dbname之间是空格
mysqldump -h127.0.0.1 -uroot -ppassword --databases a_dbname b_dbname > /tmp/dbname.sql;
1.4、备份数据库并压缩
mysqldump -h127.0.0.1 -uroot -ppassword dbname | gzip > /tmp/dbname.sql.gz; ##################################还原################################### 2.1、还原数据库 mysql -h127.0.0.1 -uroot -ppassword dbname use dbname #数据库 mysql>source /tmp/dbname.sql #然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
3 定时同步数据库通过上述介绍,我们已经了解了如何备份和还原数据库。接下来,我们需要按天备份源数据库,并在同步到目标数据库前对目标数据库进行备份。
注意,在进行任何同步操作前,必须先做好备份,以防万一!
下面是一个实现数据库同步的示例脚本,结合crontab定时任务执行脚本,crontab -e 编辑crontab服务文件,
例如: 23 /bin/sh /tmp/synchronize_database_data.sh。
查看定时任务:crontab -l。
以下是synchronize_database_data.sh同步数据库脚本,供参考:
代码语言:javascript代码运行次数:0运行复制```javascript
!/bin/bash
time1=
date +%Y-%m-%dtime2=date +%Y-%m-%d_%H:%M:%S注:数据库位置一定要对应!!!
src_dbname_list=(dbname_a dbname_b) dst_dbname_list=(dbname_a dbname_b)
1、根据当天时间创建目录, -p:如果不存在该目录则创建
create_dir(){ mkdir -p /tmp/src_dbname/${time1} mkdir -p /tmp/dst_dbname/${time1} }
2、源数据库压缩备份
bak_scr(){ mysqldump -h127.0.0.1 -P3306 -uroot -ppassword ${src_dbname_list[$i]} | gzip > /tmp/src_dbname/${time1}/${src_dbname_list[$i]}.sql.gz echo -e "\033[32m${time2} ${src_dbname_list[$i]} 源数据库压缩备份成功 路径:/tmp/src_dbname/${time1}/${src_dbname_list[$i]}.sql.gz\n\033[0m" }
3、目标数据库备份+源数据库同步到目标数据库
sync_dst(){ mysqldump -h127.0.0.1 -P3306 -uroot -ppassword ${dst_dbname_list[$j]} | gzip > /tmp/dst_dbname/${time1}/${dst_dbname_list[$j]}.sql.gz echo -e "\033[32m${time2} ${dst_dbname_list[$j]} 目标数据库压缩备份成功 路径:/tmp/dst_dbname/${time1}/${dst_dbname_list[$j]}.sql.gz\n\033[0m" gunzip
4 总结
对数据库要怀有敬畏之心,无论是生产环境还是测试环境,数据备份都是基本功!!!









