在 CentOS7 上部署 MySQL 主從 1 通過 SecureCRT 連接至 MySQL 主服務器; 2 找到 my.cnf 文件所在的目錄: mysql --help | grep my.cnf 一般情況 my.cnf 都會位於 /etc/ 目錄下; 3 用 vim 打開 MySQL 的配置文件 my.cnf: vim /etc/my.cnf 4 找到 [mysqld] 並在其後添加如下配置: # 唯一標識此 MySQL 服務器,默認值為 1,一般采用所屬 IP 的末端值 server-id=1 # 二進制日志文件名字,MySQL 主服務器必須啟用此配置 log-bin=master-bin-log # MySQL 主服務器中參與主從復制的數據庫名;如果有多個數據庫,則此參數可以有多個,每行一個,分部對應不同的數據庫 binlog-do-db=db_master_slave # MySQL 主服務器中二進制日志文件的索引名 log-bin-index=master-bin-log.index 5 在 MySQL 從服務器上同樣用 vim 打開 my.cnf 文件,定位到 [mysqld],並在其後面加入如下配置: # 唯一標識此 MySQL 服務器,默認值為 1,一般采用所屬 IP 的末端值 server-id=2 # MySQL 從服務器的日志索引文件名 relay-log-index=slave-relay-log.index # MySQL 從服務器的日志文件名 relay-log=slave-relay-log 6 在 MySQL master 和 slave 服務器上分別創建數據庫 db_master_slave: create database db_master_slave; 7 在 MySQL master 服務器上創建用戶 user_master,並設置密碼 Password_Master_123456: create user 'user_master'@'%' identified by 'Password_Master_123456'; 8 在 MySQL master 服務器上為用戶 user_master 賦權對 db_master_slave 數據庫的所有權限: grant all on db_master_slave.* to 'user_master'@'%'; 9 在 MySQL master 服務器上為用戶 user_master 賦本地訪問的權限: grant all privileges on db_master_slave.* to 'user_master'@'localhost' identified by 'Password_Master_123456'; 10 在 MySQL master 服務器上授權 MySQL slave 服務器可以通過 user_master 用戶訪問主服務器: grant replication slave on *.* to 'user_master'@'%' identified by 'Password_Master_123456' with grant option; 11 在 MySQL master 和 slave 服務器上分別重啟 MySQL 服務: 關閉 MySQL 服務: service mysqld stop 打開 MySQL 服務: service mysqld start
重啟 MySQL 服務:
service mysql restart 12 在 MySQL master 和 slave 服務器上分別進入到數據庫 db_master_slave 中: use db_master_slave; 並創建用戶名表 t_user: create table t_user(id int(3), name varchar(128)); 13 查看 MySQL master 服務器的狀態: show master status; 並記錄下其 master_log_file 屬性和 master_log_pos 屬性的值; 14 在 MySQL slave 服務上執行如下配置: change master to master_host='192.168.1.10', // MySQL master 服務器IP master_port=3306, master_user='user_master', master_password='Password_Master_123456', master_log_file='master-bin-log.000004', // MySQL master 服務器 master_log_file 的值 master_log_pos=654; // MySQL master 服務器 master_log_pos 的值 15 在 MySQL master 服務器的 db_master_slave 庫中為用戶名 t_user 添加數據: mysql> insert into t_user(id, name) values(1, 'idea1'); mysql> select * from t_user; 16 在 MySQL slave 服務器的 db_master_slave 庫中為用戶名 t_user 添加數據: mysql> insert into t_user(id, name) values(1, 'idea1'); mysql> select * from t_user; 17 在 MySQL slave 服務器的如何發現: slave_IO_running = NO 則執行如下命令: mysql> stop slave; mysql> start slave; 18 查看 MySQL 運行時中 server_id 的值: show variables like 'server_id';