我有一个装有大型数据库的 Debian 盒子。
我想用这个数据库做很多有风险的操作。
这是关于更新与该数据库兼容的软件。
我可以停止数据库 5 分钟,但不能停止更长时间。
Db文件是lvm逻辑卷上的innodb文件。
当我进行备份时,我使用 lvm 快照来进行。
我非常确定,我需要多次尝试更新,因为总会出一些问题。
我的想法是:如果我执行 lvm 快照(尺寸很大),挂载它,启动另一个 mysql 实例并在该实例上执行所有有风险的工作,会怎么样?
如果出现问题,我只需删除快照并重新开始。
如果全部正确,并且所有测试都将通过(可能需要 1-2 天) - 我从第二个实例进行备份,然后将其移动到第一个实例。
我需要一些东西来启动第二个实例而不触及我的第一个实例。我可以使用什么?
- 执行 debootstrap 和 chroot 吗?
- 安装 kvm?
我需要你的建议。
答案1
类似于 FreeBSD 的 Linux 监狱名为 LXC (https://wiki.debian.org/LXC)我认为它很适合这里。
您将获得具有透明可访问文件系统和可忽略不计的性能损失的专用系统环境。
答案2
启动第二个 mysql 实例的最简单方法是使用具有不同数据目录、端口号等的单独 my.cnf
然后你只需将快照挂载在新的数据目录下,并使用新的 my.cnf 配置文件启动 mysql,即:
/usr/sbin/mysqld --defaults-file=/etc/my-blabla.cnf --basedir=/usr --datadir=/data/blabla --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=1024 --pid-file=/data/blabla/mysql.blabla.pid --socket=/data/blabla/mysql.blabla.sock --port=3307
类似这样的事...