主服務器-my.cnf配置
[mysqld_multi]
mysqld = /home/mysql/bin/mysqld
mysqladmin = /home/mysql/bin/mysqladmin
log = /tmp/mysql_multi.log
[mysqld1]
#skip-grant-tables
skip-name-resolve
datadir = /home/mysql/data1 #設置數據目錄
socket = /tmp/mysql.sock1 #設置sock文件存放路徑
port = 3306 #設置監聽開放端口
user = mysql
log-bin=mysql-bin
server-id=1 #設置運行用戶
relay_log=mysql-relay-bin
performance_schema = off #關閉監控
innodb_buffer_pool_size = 32M #設置innodb 緩存大小
bind_address = 0.0.0.0 #設置監聽IP地址
skip-name-resolve = 0 #關閉DNS反向解析
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysqld2]
#skip-grant-tables
skip-name-resolve
datadir = /home/mysql/data2
socket = /tmp/mysql.sock2
port = 3307
user = mysql
server-id=2
log-bin=mysql-bin
performance_schema = off
innodb_buffer_pool_size = 32M
bind_address = 0.0.0.0
skip-name-resolve = 0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
從服務器-my.cnf
[mysql]
#mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
skip-name-resolve
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=/home/mysql
# 設置mysql數據庫的數據的存放目錄
datadir=/home/mysql/data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
server-id = 150
log-bin=mysql-bin
relay_log=mysql-relay-bin
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
注意:server-id 不可以一樣,注意路徑
啓動MySQL後,進入MySQL設置需要連接主的服務器。查看主服務器的文件及端口
show master status;
在從服務器內對應進行設置
CHANGE MASTER TO MASTER_HOST='192.168.1.169',
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000022',
MASTER_LOG_POS=6041;
啓動slave
start slave
停止slave
stop slave
查看從服務器效果
show slave status \G;
注意兩個yes,如有問題看下面報錯。
錯誤例子
"Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work."
主從服務器中使用了相同的UUID,查看/var/lib/mysql/auto.cnf發現server-uuid一致。刪除重啓mysql