1按价、主mysql配置信息
配置文件路徑:/etc/mysql/mysql.conf.d/mysqld.cnf
log_bin=‘mysql-bin’ # 必須設置餐茵、啟動二進制日志
server-id=12 # 必須設置、保證每個服務器設置id不相同
binlog-do-db=osyunweidb # 需要同步的數(shù)據(jù)庫名稱辆苔、可以寫多行表示同步多個數(shù)據(jù)庫
binlog-ignore-db=mysql # 需要忽略的數(shù)據(jù)庫笔诵、不進行同步
2、從mysql配置信息
配置文件路徑:/etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address= 127.0.0.1 # 允許外網(wǎng)鏈接
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION #datetime類型可以設置為0
group_concat_max_len = 102400 # 拼接字符串長度
log_bin=‘mysql-bin2’ # 必須設置姑子、啟動二進制日志
server-id=11 # 必須設置、保證每個服務器設置id不相同
replicate-do-db # 指定需要復制的數(shù)據(jù)庫测僵。
replicate-ignore-db # 復制時需要排除的數(shù)據(jù)庫
3、設置外網(wǎng)主機以root身份登陸缅疟、重啟主從mysql服務
1隅熙、登陸自己機器的MySQL數(shù)據(jù)庫:mysql -uroot -p密碼
設置root用戶可以任意IP訪問,代碼如下(可選森逮,這里%代表任意,也可以指定IP):
update user set host = '%' where user = 'root';
2磁携、GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
予任何主機訪問數(shù)據(jù)的權限 這里youpassword 換成你的數(shù)據(jù)庫登錄密碼
3褒侧、MySQL>FLUSH PRIVILEGES;
修改生效,這樣就可以在其它任何的主機上以root身份登錄啦谊迄!
$sudo service mysql restart
4闷供、進入主服務器sql中 執(zhí)行下面命令
show master status\G
image.png
第一行,當前正在記錄的 binarylog文件名统诺;
第二行歪脏,表示當前的文件偏移量,寫入在上面文件的記錄位置粮呢;
第三行婿失,表示需要記錄的數(shù)據(jù)庫;
第四行啄寡,表示需要忽略的數(shù)據(jù)庫豪硅;
只有需要記錄的數(shù)據(jù)庫,其變化才會被寫入到日志文件中挺物。
5懒浮、數(shù)據(jù)同步
1、備份前先把數(shù)據(jù)庫加上鎖姻乓,以保證備份時不會寫入新數(shù)據(jù)導致數(shù)據(jù)不一致
flush tables with read lock;
2嵌溢、在備份服務器中新建數(shù)據(jù)庫名稱與主數(shù)據(jù)庫相同、主服務器中執(zhí)行下述命令:
mysqldump --default-character-set=utf8mb4 --host=127.0.0.1 -ualgo_wb -palgo_wb --opt algo_wyh | mysql --host=192.168.0.106 -ualgo_wb -palgo_wb --default-character-set=utf8mb4 -C algo_wyh
3蹋岩、從mysql輸入下述命令:
CHANGE MASTER TO
MASTER_HOST='主mysql服務器的IP地址',
MASTER_USER='主mysql用戶名',
MASTER_PASSWORD='主mysql密碼',
MASTER_LOG_FILE='mysql-bin.000004', 對應主mysql中file內容
MASTER_LOG_POS=7145;對應主mysql中position內容
6赖草、啟動服務器slave
1、啟動slave
start slave;
2剪个、停止slave
stop slave;
7秧骑、查看slave狀態(tài)
show slave status\G
image.png
Master_host 指的是 主服務器的地址
Master_user 指的是主sql服務器上用來復制的用戶,從服務器會用此賬號來登錄主服務進行復制
Master_log_file 主sql服務日志文件名
Read_Master_log_pos 主sql日志記錄位置(多少行開始), 從服務器根據(jù)日志文件名與這個記錄位置選擇復制的文件和位置
Slave_IO_Running: 指的就是從服務器上負責讀取主服務器的線程工作狀態(tài)扣囊。 從服務器用這個專門的線程鏈接到主服務器上乎折,并把日志拷貝回來。
Slave_SQL_Running: 指的就是專門執(zhí)行sql的線程侵歇。 它負責把復制回來的Relaylog執(zhí)行到自己的數(shù)據(jù)庫中骂澄。 這兩個參數(shù)必須都為Yes 才表明復制在正常工作。
8惕虑、取消 lock鎖限制
unlock tables;