mysql雙主安裝部署
準備作業:
1.master1與master2的mysql已安裝完成(版本一致,版本不一致沒試過小版本應該問題不大)
2.master1跟master2的埠網路已互通
3.資料庫新建同步用戶,create user slave identified by ‘xxx’;
開始:
1.master1節點修改my.cnf
關鍵配置:
server_id=2 --server id 每個節點都不能相同
auto-increment-increment = 2 --自增長欄位每次遞增2,n臺機器就是n,這里是2
auto-increment-offset = 1 --自增長欄位從1開始,1,2,…,n,第n臺就是n
這里my.cnf的配置是
[mysqld]
#admin
datadir = /dsj/data
tmpdir = /dsj/tmp
port = 13307
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_bin
skip_name_resolve=1
secure_file_priv=/var/lib/mysql-files
log-error=/var/log/mysqld.log
local_infile=0
slow_query_log=1
long_query_time=0.5
expire_logs_days = 20
event_scheduler=1
#replication
server_id=1
log_bin=/dsj/binlog/mysql-bin
relay_log=relay-bin
relay_log_recovery=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
gtid_mode=on
log_slave_updates=1
enforce_gtid_consistency=1
skip_slave_start=1
binlog_format=ROW
sync_master_info=1
slave_parallel_workers=4
binlog_checksum=CRC32
master_verify_checksum=1
slave_sql_verify_checksum=1
binlog_rows_query_log_events=1
slave_net_timeout=30
auto-increment-increment = 2 #自增長欄位每次遞增2
auto-increment-offset = 1 #自增長欄位從1開始
slave-skip-errors = all #跳過所有的錯誤錯誤,繼續執行復制操作
validate_password_policy=0 #指定密碼策略
validate_password = off #禁用密碼策略
#performance
innodb_buffer_pool_size=16000M
read_buffer_size=4M
sort_buffer_size=4M
join_buffer_size=4M
innodb_log_file_size=512M
back_log=500
max_connections=2000
open_files_limit=100000
innodb_open_files=100000
table_open_cache=20000
table_definition_cache=20000
max_allowed_packet=40M
[client]
default-character-set=utf8
2.加載配置,重啟mysql
systemctl daemon-reload
systemctl restart mysqld
3.master1的資料同步授權(同步到master2那臺機器上)
以下為master1下操作
grant replication slave,replication client,select on *.* to slave@'192.168.1.95' identified by 'Congku@114';
flush privileges;
#查看服務器狀態
mysql> show master status;
+------------------+----------+--------------+------------------+------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+------------------------------------------+
| mysql-bin.000006 | 929 | | | d3672032-c801-11eb-9a70-005056aeb414:1-4 |
+------------------+----------+--------------+------------------+------------------------------------------+
#最好將庫鎖住,僅僅允許讀,以保證資料一致性;待主主同步環境部署后再解鎖;鎖住后,就不能往表里寫資料,但是重啟mysql服務后就會自動解鎖!
注意該引數設定后,如果自己同步對方資料,同步前一定要記得先解鎖!
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
4.master2節點修改my.cnf
關鍵配置:
server_id=2 --server id 每個節點都不能相同
auto-increment-increment = 2 --自增長欄位每次遞增2,n臺機器就是n,這里是2
auto-increment-offset = 1 --自增長欄位從1開始,1,2,…,n,第n臺就是n
其余配置同master1
5.master2的資料同步授權(同步到master1那臺機器上)
以下為master2下操作
grant replication slave,replication client,select on *.* to slave@'192.168.1.58' identified by 'Congku@114';
flush privileges;
show master status;
#最好將庫鎖住,僅僅允許讀,以保證資料一致性;待主主同步環境部署后再解鎖;鎖住后,就不能往表里寫資料,但是重啟mysql服務后就會自動解鎖!
注意該引數設定后,如果自己同步對方資料,同步前一定要記得先解鎖!
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
6.先在master2資料庫上做同步master1的設定
以下為master2下操作
unlock tables;
stop slave;
#引數均為master1的引數
change master to master_host='192.168.1.58',master_user='slave',master_password='Congku@114',master_port=113307,master_log_file='mysql-bin.000006',master_log_pos=929;
start slave;
#查看slave狀態有報錯解決報錯
show slave status\G;
#完成了master2->master1的同步環境
7.在master1資料庫上做同步master2的設定
以下為master1下操作
unlock tables;
stop slave;
change master to master_host='192.168.1.95',master_user='slave',master_password='Congku@114',master_port=113307,master_log_file='mysql-bin.000006',master_log_pos=929;
start slave;
#查看slave狀態有報錯解決報錯
show slave status\G;
#完成了master1->master2的同步環境
測驗一下:
在master1新建資料庫
回到master2會發現資料庫也已經建好
master2新建表master1也已經建好
master1插入資料,master2可以查看
master2插入資料,master1可以查看
master1洗掉資料,master2可以查看已洗掉
master2洗掉資料,master1可以查看已洗掉
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/286671.html
標籤:其他
