如何配置MySQL 5.1 Master Slave数据库复制

时间:2020-01-09 10:37:45  来源:igfitidea点击:

说明

主从配置允许我们在单独的数据库服务器上维护应用程序数据的辅助副本。主服务器和从服务器之间的区别在于,仅允许主服务器将更改写入复制的数据库。从属服务器仅对其具有读取权限。

配置

为了使本教程更容易理解,使用了以下配置。

主机名角色公用IP专用IP
db01. theitroad.local主服务器64.54.200.3210.2.0.15
db02. theitroad.local从属服务器64.54.200.3310.2.0.16

配置主服务器

前几个任务将是创建数据库,该数据库将被复制到我们的从属服务器,并配置服务器以充当主服务器。

将服务器配置为主服务器

为了使服务器充当主服务器,我们需要在MySQL配置中添加几行。

  • 在文本编辑器中打开MySQL配置文件。
nano /etc/my.cnf
  • 在配置文件的[mysqld]部分下,添加以下行。
server-id=1
binlog_do_db=newapp1
  • 保存更改并退出文本编辑器。

创建复制服务帐户

我们需要创建一个帐户,供从属用来复制数据库。此帐户应仅用于复制。

  • 登录到MySQL客户端。
mysql -u root -p
  • 为复制过程创建一个服务帐户。在此示例中,我们将创建一个名为repl1的帐户。
CREATE USER 'repl1'@'db%.theitroad.intra' IDENTIFIED BY 'password';
  • 授予服务帐户复制特权。
GRANT REPLICATION SLAVE ON *.* TO 'repl1'@'db%.theitroad.intra';
  • 清除特权以启用新特权。
FLUSH PRIVILEGES;
  • 退出MySQL客户端。
quit;

创建数据库

我们首先创建一个新的数据库。该数据库将保存我们应用程序的数据。

  • 使用MySQL客户端登录到数据库服务器。出现提示时,输入密码。
mysql -u root -p
  • 创建一个新的数据库。
create database newapp1;
  • 刷新表并创建一个读锁。
flush tables with read lock;
  • 结束MySQL连接。
quit;
  • 将新数据库转储到服务器上的文件中。
mysqldump -u root -p newapp1 > newapp1.sql
  • 将转储文件复制到从属服务器。在此示例中,从属服务器是db02,我们将使用其专用IP地址连接到它。
scp newapp1.sql Hyman@localhost:/root/

重新启动MySQL服务

  • 重新启动服务
service mysqld restart

记录二进制日志的位置

从站使用二进制日志来确保它已复制了最新更改。为了让从站知道从哪里开始,我们需要记录到当前位置。

  • 登录到MySQL客户端。
mysql -u root -p
  • 运行以下命令。
show master status;
  • 我们应该看到以下输出。确保将值记录在"位置"列下。在我们的示例中,值为564.
+------------------+----------+------------------+------------------+
| File             | Position | Binlog_Do_DB     | Binlog_Ignore_DB |
+------------------+----------+------------------+------------------+
| mysql-bin.000003 |      564 | newdatabase,app1 |                  |
+------------------+----------+------------------+------------------+
1 row in set (0.00 sec)
  • 重新启动服务
service mysqld restart

配置MySQL从服务器

以下指令将允许我们的应用程序数据库被复制到我们的从属服务器。我们的示例仅使用一个从属服务器,但是,我们可以按照以下说明添加更多服务器。每个服务器将从主服务器复制。

将服务器配置为从属

  • 在文本编辑器中打开MySQL配置文件。
nano /etc/my.cnf
  • 在[mysqld]部分下,添加以下行。
server-id=2
  • 保存更改并退出文本编辑器。
  • 重新启动MySQL服务使更改生效。
service mysqld restart

导入数据库

  • 登录到从属服务器。
  • 使用MySQL客户端登录到MySQL。
mysql -u root -p
  • 创建一个与我们在主数据库上创建的数据库同名的数据库。
create database newapp1;
  • 退出MySQL。
quit;
  • 从主数据库导入数据库转储到从数据库上新创建的数据库。
mysql -u root -p newapp1 < newapp1.sql

初始化复制

我们的奴隶几乎已经准备好开始复制应用程序的数据库。现在,我们需要配置从服务器和主服务器之间的连接设置。

  • 确保我们必须遵循以下可用信息,因为配置连接将需要此信息。作为回顾,我列出了我们从上述步骤输入和记录的值。
Master Hostname
db01.theitroad.intra
repl1
password
newapp1
564
  • 使用我们上面使用的信息,执行change master命令。请记住,上面列出的值在环境中将有所不同。我们的仅用于演示。
CHANGE MASTER TO
MASTER_HOST='db01.theitroad.intra',
MASTER_USER='repl1',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='newapp1',
MASTER_LOG_POS=564;