...
在 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';