MYSQL5.7.24UAT或仿真环境搭建
一般一个公司里的应用是从dev db启动再到test db,都没有问题再到uat db或者仿真环境,进行上线的最后测试;当然这里面设计很多技术:如sql审计、功能测试、性能测试等;
目标:
1.可以快速构建UAT DB即时是TB级别的数据库
2.数据的时效性,最多落后生产数据库24小时
3.UAT验证的数据,在第二天会被回退了
4.DB支撑有效模拟线上业务
技术:
1.mysql复制框架
2.LVM snapshot技术
3.python脚本自动化
整体架构图
我们要完成S2->S2_1->S2_1_0复制逻辑及自动化过程
一、在UAT DB的server上构建MYSQL复制架构S2_1
0.创建mysql用户
1.构建如下目录
cd / mkdir -p {mysqlog2,mysqlog,conf,data} mkdir -p /snap_data/mysql
2.授权目录
cd / chown mysql:mysql -R /snap_data chown mysql:mysql -R {mysqlog2,mysqlog,conf,data}
3.构建mysql复制,这里不具体介绍搭建步骤,注意一下几点:
a.S2_1 DB 的数据库目录放在data目录下,这个目录必须要基于LVM方式创建的
b.S2_1 DB 的日志目录放在mysqlog目录下
c.S2_1 和S2_1_0的配置文件目录放置在conf下名字如下,建议两个参数配置一样,但端口和server_id保持不一样
[root@localhost conf]# ls
my.cnf my_snap.cnf
d.S2_1_0的数据目录放在/snap_data下,实际是一个lvm快照直接挂上来
e.主要socket文件命名S2_1为mysql.sock S2_1_0为mysql3307.sock
f.mysql软件目录为/usr/local/mysql
4.搭建完毕,利用如下步骤进行测试,没有问题可以进行自动化
0_1 0_2这个两个步骤在初次搭建时无需执行,在后续需要执行
0_1).关闭S2_1_0实例
/usr/local/mysql/bin/mysqladmin -uroot -proot -S/tmp/mysql3307.sock shutdown
0_2).umount S2_1_0目录
fuser -k /dev/mapper/vg_mysql-mysqllvsnap umount /dev/mapper/vg_mysql-mysqllvsnap lvremove /dev/mapper/vg_mysql-mysqllvsnap <<<<需要y确认
0).关闭S2_1复制线程
/usr/local/mysql/bin/mysql -uroot -proot-S /tmp/mysql.sock stop slave
1).关闭S2_1 mysql进程
/usr/local/mysql/bin/mysqladmin -uroot -phandpay76! -S/tmp/mysql.sock shutdown
2).umount S2_1的data目录挂在点
fuser -k /dev/mapper/vg_mysql-lv_mysql umount /dev/mapper/vg_mysql-lv_mysql
3).创建快照
lvcreate -L 200G -s -n mysqllvsnap /dev/mapper/vg_mysql-lv_mysql
4).mount S2_1的data目录挂在点
mount /dev/mapper/vg_mysql-lv_mysql /data
5).启动 S2_1 mysql进程
/usr/local/mysql/bin/mysqld --defaults-file=/conf/my.cnf &
6).mount S2_1_0
mount /dev/mapper/vg_mysql-mysqllvsnap /snap_data/
7).启动S2_1_0 mysql进程
/usr/local/mysql/bin/mysqld --defaults-file=/conf/my_snap.cnf &
8).将S2_1_0 mysql复制线程关闭,及信息擦除
stop slave; reset slave all;
9).start S2_1 io thread
start slave io_thread;
5.构建自动化脚本,请参考
https://github.com/trsenzhang/AOMmysql下的preDBcreate.sh脚本