将 MySQL 数据库复制到另一台机器

1. 确认 MySQL 版本

在进行数据库复制之前,我们需要确认两个 MySQL 版本是否一致,否则可能会出现一些不可预期的问题。

可以通过以下命令查看当前 MySQL 版本:

mysql -V

如果要检查另一台机器的版本,可以通过以下命令:

mysql -u 【用户名】 -p【密码】 -h 【IP地址】 -P 【端口号】 -e "select version();" 

2. 备份源数据库

2.1 使用 mysqldump

使用 mysqldump 工具可以备份整个数据库或指定的表。

备份整个数据库:

mysqldump -u 【用户名】 -p【密码】 【数据库名】 > 【备份文件名】.sql 

备份指定的表:

mysqldump -u 【用户名】 -p【密码】 【数据库名】 【表名】 > 【备份文件名】.sql

备份完成后,可以使用以下命令进行验证:

head -n 10 【备份文件名】.sql

该命令将显示备份文件的前10行,以确保备份成功。

2.2 使用 LVM 快照备份

如果数据库比较大,在备份整个实例时,mysqldump 可能需要一些时间来执行。为了避免这个问题,可以使用 LVM 快照来备份数据库。

下面是一个例子:

sudo lvcreate -L 【空间大小】 -s -n 【快照名】 【数据库目录】

sudo tar cvpzf 【快照名】.tar.gz 【快照目录】

备份完成后,使用以下命令验证备份是否成功:

tar tvzf 【快照名】.tar.gz | grep 【文件名】

3. 配置目标服务器

在复制数据库之前,我们需要在目标服务器上创建一个新的空白数据库。

可以使用以下命令:

mysqladmin -u root -p【密码】 create 【数据库名】

4. 复制数据库

4.1 使用 mysqldump

使用 mysqldump 工具可以将备份文件恢复到目标系统中。

恢复整个数据库:

mysql -u 【用户名】 -p【密码】 【数据库名】 < 【备份文件名】.sql

恢复指定的表:

mysql -u 【用户名】 -p【密码】 【数据库名】 < 【备份文件名】.sql 【表名】

4.2 使用 LVM 快照

使用 LVM 快照可以将备份文件恢复到目标系统中。

需要先将备份文件传输到目标系统中。

然后,使用以下命令将备份文件解压到数据库目录中:

tar -xvpzf 【备份文件名】.tar.gz -C 【数据库目录】

最后,使用以下命令将解压后的快照恢复到数据库中:

sudo lvconvert --merge 【数据库目录】/【快照名】

sudo service mysql start

请注意,这种方法只适用于 Innodb 存储引擎,并且不建议在繁忙的服务器上使用,因为它会在恢复期间暂停数据库。

5. 配置主/从服务器

如果您想让两个 MySQL 实例自动同步,可以在一个主服务器上配置一个从服务器。

在主服务器上执行以下命令:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

找到以下行:

bind-address = 127.0.0.1

并将其更改为:

#bind-address = 127.0.0.1

然后,添加以下几行:

server-id=1

log-bin=/var/log/mysql/mysql-bin.log

binlog-do-db=【数据库名】

在从服务器上执行以下命令:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

将以下行注释掉:

#bind-address = 127.0.0.1

并添加以下行:

server-id=2

relay-log=/var/log/mysql/mysql-relay-bin.log

log-slave-updates=1

read-only=1

重启两个服务器的 MySQL 服务,然后登录主服务器并创建一个新的用户。

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

在主服务器上使用以下命令获取二进制文件偏移量:

show master status;

在从服务器上执行以下命令:

CHANGE MASTER TO MASTER_HOST='【主服务器IP地址】',MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='【二进制文件名】', MASTER_LOG_POS=【偏移量】;

最后,启动从服务器的复制程序:

start slave;

现在,两条服务器上的 MySQL 实例应该自动同步了。

总结

复制 MySQL 数据库是一项非常重要的任务,因为它可以帮助您在多个服务器之间共享数据。在进行此操作之前,请确保您已备份源数据库,并且要在目标系统上创建一个新的空白数据库。根据您的需求,可以使用不同的方法进行数据库复制,包括 mysqldump 和 LVM 快照。如果您想让两个 MySQL 实例自动同步,请在一个主服务器上配置一个从服务器。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签