MySQL主從復制是指將一臺數據庫服務器(主機)上的操作同步到另外一臺或多臺服務器(從機)上,從而達到多臺服務器共享數據的目的。在實際應用中,通常會將一些特定的表進行主從復制,例如訂單表、用戶表等需要實時同步的數據表。
下面是MySQL主從復制單表教程:
1. 首先,在主機上創建需要同步的表,例如訂單表: CREATE TABLE `order_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_no` varchar(50) DEFAULT NULL, `user_id` int(11) DEFAULT NULL, `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; 2. 然后,在主機上配置主從復制: # 修改主機my.cnf文件 vi /etc/my.cnf # 在my.cnf文件中添加如下配置 [mysqld] log-bin=mysql-bin binlog-ignore-db=mysql binlog_do_db=my_db # 需要同步的數據庫名 server-id=1 # 保存修改后,重新啟動Mysql服務 systemctl restart mysqld 3. 接著,在從機上配置復制: # 修改從機my.cnf文件 vi /etc/my.cnf # 在my.cnf文件中添加如下配置 [mysqld] server-id=2 relay-log=mysql-relay-bin log-slave-updates=1 # 保存修改后,重新啟動Mysql服務 systemctl restart mysqld # 在從機上創建需要同步的表 CREATE TABLE `order_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_no` varchar(50) DEFAULT NULL, `user_id` int(11) DEFAULT NULL, `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; 4. 最后,在主機上進行表級別的授權,使從機可以讀取和同步該表: # 在主機上執行 GRANT REPLICATION SLAVE ON my_db.order_info TO 'slave_user'@'%' IDENTIFIED BY 'password'; # 在從機上執行 CHANGE MASTER TO MASTER_HOST='master_host',MASTER_USER='slave_user',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107; 5. 成功配置后,在主機上向訂單表插入一條數據,從機將同步該數據。可以通過在從機上查詢該表的數據,檢查是否同步成功。
上一篇CSS十字交叉線