MySQL是一種流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),常常用于存儲(chǔ)和管理大量數(shù)據(jù)。在一些情況下,我們需要把MySQL數(shù)據(jù)庫的某些庫復(fù)制到其他主機(jī)上,這個(gè)過程也被稱為數(shù)據(jù)庫的“復(fù)制”。下面將介紹如何使用MySQL進(jìn)行數(shù)據(jù)庫的復(fù)制。
首先,我們需要在需要復(fù)制的MySQL服務(wù)器上開啟復(fù)制功能。具體操作如下:
# 打開MySQL配置文件my.cnf $ sudo vi /etc/my.cnf # 在[mysqld]下面添加以下內(nèi)容 server-id=1 log-bin=/var/log/mysql/mysql-bin.log # 保存并退出my.cnf文件 # 重啟MySQL服務(wù)器 $ sudo systemctl restart mysqld
在上面的代碼中,我們開啟了MySQL的二進(jìn)制日志功能,并指定了復(fù)制服務(wù)器的ID為1。
接下來,我們需要在需要接收復(fù)制數(shù)據(jù)的MySQL服務(wù)器上進(jìn)行配置。具體操作如下:
# 打開MySQL配置文件my.cnf $ sudo vi /etc/my.cnf # 在[mysqld]下面添加以下內(nèi)容 server-id=2 # 保存并退出my.cnf文件 # 重啟MySQL服務(wù)器 $ sudo systemctl restart mysqld
在上面的代碼中,我們指定了接收復(fù)制數(shù)據(jù)服務(wù)器的ID為2。
接下來,我們需要在源MySQL服務(wù)器上創(chuàng)建一個(gè)用于復(fù)制的賬戶,并賦予合適的權(quán)限。具體操作如下:
# 登錄MySQL服務(wù)器 $ mysql -u root -p # 創(chuàng)建一個(gè)用于復(fù)制的用戶 mysql>CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; # 賦予用戶復(fù)制權(quán)限 mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; mysql>FLUSH PRIVILEGES; mysql>quit;
在上面的代碼中,我們創(chuàng)建了一個(gè)名為“repl_user”的復(fù)制用戶,并賦予了REPLICATION SLAVE權(quán)限。
接下來,在接收復(fù)制數(shù)據(jù)的MySQL服務(wù)器上,我們需要設(shè)置復(fù)制服務(wù)器的IP地址和端口,以及復(fù)制賬戶的用戶名和密碼。具體操作如下:
# 登錄MySQL服務(wù)器 $ mysql -u root -p # 鎖定數(shù)據(jù)庫表并獲取復(fù)制信息 mysql>FLUSH TABLES WITH READ LOCK; mysql>SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 315 | | | +------------------+----------+--------------+------------------+ # 在另一個(gè)終端窗口中,使用mysqldump備份需要復(fù)制的數(shù)據(jù)庫,保存到本地 $ mysqldump -u root -p --databases db_name >db_name.sql # 解鎖數(shù)據(jù)庫表 mysql>UNLOCK TABLES; # 在接收數(shù)據(jù)的MySQL服務(wù)器上,通過mysql命令導(dǎo)入備份的數(shù)據(jù) $ mysql -u root -p< db_name.sql # 設(shè)置復(fù)制服務(wù)器的IP地址和端口,以及復(fù)制賬戶的用戶名和密碼 mysql>CHANGE MASTER TO MASTER_HOST='source_server_ip', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=315; # 開啟復(fù)制 mysql>START SLAVE;
在上面的代碼中,我們使用FLUSH TABLES WITH READ LOCK命令鎖定數(shù)據(jù)庫表,獲取復(fù)制信息;通過mysqldump備份需要復(fù)制的數(shù)據(jù)庫;然后在接收數(shù)據(jù)的MySQL服務(wù)器上,通過mysql命令導(dǎo)入備份的數(shù)據(jù);最后設(shè)置復(fù)制服務(wù)器的IP地址和端口,以及復(fù)制賬戶的用戶名和密碼,并開啟復(fù)制。
以上就是使用MySQL進(jìn)行數(shù)據(jù)庫復(fù)制的全部過程。