1 环境治理之同步数据库
2 如何同步数据库


##################################备份###################################注:如果账号密码有特殊字符,需用斜杠做转义,如: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 < /tmp/dbname.sql;#2.2、解压数据库并还原gunzip < /tmp/dbname.sql.gz | mysql -h127.0.0.1 -uroot -ppassword dbname;#2.3、source还原数据库mysql -h127.0.0.1 -uroot -ppasswordmysql>use dbname #数据库mysql>source /tmp/dbname.sql #然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
3 定时同步数据库
以下是synchronize_database_data.sh同步数据库脚本,可供参考~
#!/bin/bashtime1=`date +%Y-%m-%d`time2=`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.gzecho -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.gzecho -e "\033[32m${time2} ${dst_dbname_list[$j]} 目标数据库压缩备份成功 路径:/tmp/dst_dbname/${time1}/${dst_dbname_list[$j]}.sql.gz\n\033[0m"gunzip < /tmp/src_dbname/${time1}/${src_dbname_list[$i]}.sql.gz | mysql -uroot -ppassword ${dst_dbname_list[$j]}echo -e "\033[32m${time2} ${src_dbname_list[$i]} to ${dst_dbname_list[$j]} 数据同步成功\n\033[0m"}for i in ${!src_dbname_list[@]}docreate_dirbak_scrfor j in ${!dst_dbname_list[@]}do# $i -eq $j :表示参数i和参数j的位置相同, 注:数据库位置一定要对应!!!if [ $i -eq $j ];thensync_dstfidonedone
4 总结
文章转载自嘎嘎软件测试,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




