下載mysql8 https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.26-winx64.zip
配置
準備配置文件 my.ini,存放于mysql根目錄下
[mysqld]
開啟二進制日志
log-bin=mysql-bin
設(shè)置server-id
server-id=1
read-only=1 #從服務(wù)器添加此柒桑,設(shè)置數(shù)據(jù)庫只讀
設(shè)置3311端口
port=3311
自定義設(shè)置mysql的安裝目錄,即解壓mysql壓縮包的目錄
basedir=D:\Server\mysql-Master
自定義設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)存放目錄
datadir=D:\Server\mysql-Master\data
允許最大連接數(shù)
max_connections=200
允許連接失敗的次數(shù),這是為了防止有人從該主機試圖攻擊數(shù)據(jù)庫系統(tǒng)
max_connect_errors=10
服務(wù)端使用的字符集默認為UTF8
character-set-server=utf8
創(chuàng)建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
默認使用“mysql_native_password”插件認證
default_authentication_plugin=mysql_native_password
[mysql]
設(shè)置mysql客戶端默認字符集
default-character-set=utf8
[client]
設(shè)置mysql客戶端連接服務(wù)端時默認使用的端口和默認字符集
port=3311
default-character-set=utf8
復制Mysql程序為三份牙瓢,分別命名為Master,Slave1,Slave2
修改My.ini文件端口號分別為 3311鼎天,3312贺氓,3313
Server-id 分別設(shè)置為 1得糜,2叨襟,3
Master重啟mysql繁扎,創(chuàng)建用于同步的用戶賬號
創(chuàng)建用戶
CREATE USER 'repl'@'%' IDENTIFIED BY 'slavepass';
分配權(quán)限
GRANT REPLICATION SLAVE ON . TO 'repl'@'%';
刷新權(quán)限
flush privileges;
查看master狀態(tài),記錄二進制文件名(mysql-bin.000003)和位置(73):
SHOW MASTER STATUS;
重啟Slave mysql糊闽,打開mysql會話梳玫,執(zhí)行同步SQL語句(需要主服務(wù)器主機名,登陸憑據(jù)右犹,二進制文件的名稱和位置):
CHANGE MASTER TO
-> MASTER_HOST='182.92.172.80', #MASTER服務(wù)主機地址
-> MASTER_PORT=3311,
-> MASTER_USER='rep1',
-> MASTER_PASSWORD='slavepass',
-> MASTER_LOG_FILE='mysql-bin.000003',
-> MASTER_LOG_POS=73;
啟動slave同步進程:
start slave;
查看slave狀態(tài):
show slave status\G;
當Slave_IO_Running和Slave_SQL_Running都為YES的時候就表示主從同步設(shè)置成功了提澎。接下來就可以進行一些驗證了,比如在主master數(shù)據(jù)庫的test數(shù)據(jù)庫的一張表中插入一條數(shù)據(jù)念链,在slave的test庫的相同數(shù)據(jù)表中查看是否有新增的數(shù)據(jù)即可驗證主從復制功能是否有效虱朵,還可以關(guān)閉slave(mysql>stop slave;),然后再修改master,看slave是否也相應(yīng)修改(停止slave后钓账,master的修改不會同步到slave),就可以完成主從復制功能的驗證了絮宁。
還可以用到的其他相關(guān)參數(shù):
master開啟二進制日志后默認記錄所有庫所有表的操作梆暮,可以通過配置來指定只記錄指定的數(shù)據(jù)庫甚至指定的表的操作,具體在mysql配置文件的[mysqld]可添加修改如下選項:
不同步哪些數(shù)據(jù)庫
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
只同步哪些數(shù)據(jù)庫绍昂,除此之外啦粹,其他不同步
binlog-do-db = game
啟動
初始化MySQL
mysqld --initialize-insecure --user=mysql8-master
可能報錯:沒有msvcr120.dll文件
網(wǎng)上下載 msvcr120.dll 文件
復制到 C:WindowsSystem32目錄下
再次執(zhí)行初始化操作
安裝服務(wù)
mysqld install [服務(wù)名] # 安裝mysql 服務(wù)
net start mysql # 啟動服務(wù)
刪除服務(wù)
sc delete <服務(wù)名> 或 mysqld --remove
登錄數(shù)據(jù)庫
第一次無密碼偿荷,直接回車
mysql -u root -p
顯示所有數(shù)據(jù)庫
show databases;
使用某個庫
use mysql;
更改root密碼
update mysql.user
set authentication_string = password('123456') ,
password_expired = 'N'
where User = 'root'
AND Host = 'localhost';
如果報錯就用
alter user 'root'@'localhost' identified by '123456';
刷新權(quán)限
flush privileges;
Master重新啟動后需要修改Salve配置
CHANGE MASTER TO
MASTER_HOST='172.16.98.133',
MASTER_PORT=3311,
MASTER_USER='master',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=98;
START Slave;
SHOW SLAVE STATUS;
注:
問題:Slave_SQL_Running:no
解決辦法:
Stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
問題:Slave_SQL_Running:no
解決辦法:
Stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0; #mysql-bin.000026 是通過SHOW MASTER STATUS;查詢
START SLAVE;