一、傳統binlog主從複製,跳過報錯方法
mysql> stop sl**e;
mysql> set global sql_sl**e_skip_counter = 1;
mysql> start sl**e;
mysql> show sl**e status \g
二、gtid主從複製,跳過報錯方法
mysql> stop sl**e; #先關閉sl**e複製;
mysql> change master to ...省略... #配置主從複製;
mysql>程式設計客棧 show sl**e status\g #檢視主從狀態;
發現報錯:
mysql> show sl**e status\g
*************************** 1. row ***************************
sl**e_io_state: waiting for master to send event
master_host: 172.19.195.212
master_user: master-sl**e
master_port: 3306
connect_retry: 60
master_log_file: mysql-bin.000021
read_master_log_pos: 194
relay_log_file: nginx-003-relay-bin.000048
relay_log_pos: 454
relay_master_log_file: mysql-bin.000016
sl**e_io_running: yes
sl**e_sql_running: no
replicate_do_db:
replicate_ignore_db:
replicate_do_twww.cppcns.comable:
replicate_ignore_table:
replicate_wild_do_table:
replicate_wild_ignore_table:
last_errno: 1007
last_error: error 'can't create database 'code'; database exists' on query. default database: 'code'. query: 'create database code'
skip_counter: 0
exec_master_log_pos: 8769118
relay_log_space: 3500
until_condition: none
until_log_file:
until_log_pos: 0
master_ssl_allowed: no
master_ssl_ca_file:
master_ssl_ca_path:
master_ssl_cert:
master_ssl_cipher:
master_ssl_key:
seconds_behind_master: null
master_ssl_verify_server_cert: no
last_io_errno: 0
last_io_error:
last_sql_errno: 1007
last_sql_error: error 'can't create database 'code'; database exists' on query. default database: 'code'. query: 'create database code'
replicate_ignore_server_ids:
master_server_id: 100
master_uuid: fea89052-11ef-11eb-b241-00163e00a190
master_info_file: /usr/local/mysql/data/master.info
sql_delay: 0
sql_remaining_delay: null
sl**e_sql_running_state:
master_retry_count: 86400
master_bind:
last_io_error_timestamp:
last_sql_error_timestamp: 201022 09:31:29
master_ssl_crl:
master_ssl_crlpath:
retrieved_gtid_set: fea89052-11ef-11eb-b241-00163e00a190:8-5617
executed_gtid_set: a56c9b04-11f1-11eb-a855-00163e128853:1-11224,
fea89052-11ef-11eb-b241-00163e00a190:1-5614
auto_position: 1
replicate_rewrite_db:
channel_name:
master_tls_version:
1 row in set (0.01 sec)
可以看到 sl**e_sql_running 為 no,表示執行取回的二進位制日誌**jyc出了問題;
在 last_error 中也可以看到大概的報錯;(因為我之前的操作,大概可以判斷出 是因為主庫的二進位制日誌中有建立code庫的sql,而從庫上我已經建立了這個庫,應該是產生了衝突;)
解決方法:
1、如果清楚自己之前的操作,可以將從庫中產生衝突的庫刪除;
2、或者通過跳過gtid報錯的事務的方法
--- 通過 last_sql_errno 報錯編號查詢具體的報錯事務
mysql> select * from performance_schema.replication_applier_status_by_worker where last_error_number=1007\g
*************************** 1. row ***************************
channel_name:
worker_id: 0
thread_id: null
service_state: off
last_seen_transaction: fea89052-11ef-11eb-b24
last_error_number: 1007
last_error_message: error 'can't create database 'code'; database exists' on query. default database: 'code'. query: 'create database code'
last_error_timestamp: 2020-10-22 09:31:29
1 row in set (0.00 sec)
mysql> stop sl**e;
query ok, 0 rows affected (0.00 sec)
--- 跳過查詢到報錯的事務(last_seen_transaction 的值)
mysql> set @@session.gtid_next='fea89052-11ef-11eb-b241-00163e00a190:5615';
query ok, 0 rows affected (0.00 sec)
mysql> begin;
query ok, 0 rows affected (0.00 sec)
--- 提交乙個空的事務,因為設定gtid_next後,gtid的生命週期開始了,必須通過顯性的提交乙個事務來結束;
mysql> commit;
query ok, 0 rows affected (0.00 sec)
--- 設定回自動模式;
mysql> set @@session.gtid_next=automatic;
query ok, 0 rows affected (0.00 sec)
mysql> start sl**e;
query ok, 0 rows affected (0.00 sec)
通過以上步驟,就跳過了這次的gtid報錯的事務,如果 start sl**e 之後還是有報錯,那麼就按照此步驟繼續跳過;
經驗豐富的話,基本不用查詢事務,通過 executed_gtid_set 就可以判斷出報錯的事務是 fea89052-11ef-11eb-b241-00163e00a190:5615 了;因為執行事務,到 fea89052-11ef-11eb-b241-00163e00a190:1-5614 的時候報錯了,應該可以判斷是 5615事務出現的錯誤;
mysql主從複製
罪過啊,博主最近好久沒有更新部落格了,轉有道雲筆記了,筆記裡還有些乾貨,最近慢慢分享出來吧。博主最近發現有好多想學,但是發現精力有限啊,博主本來是搞個開發的,但是偏偏想把運維,dba的技術全都學了 mysql集群,nginx等等等 但是發現精力有限,所以簡單了解一下,mysql的主從複製,後面還有m...
MySQL 主從複製
1.概念 將主伺服器的資料複製到另外一台或多台伺服器的過程。也即將主資料庫的ddl和dml操作通過二進位制日誌傳到復 務器上,然後在從伺服器上對這些日誌進行重新執行,從而 保持資料同步。2.作用 降低主伺服器的訪問壓力 避免主伺服器因故障導致資料丟失。3.操作步驟 1 主伺服器將資料的改變記錄到二進...
MySQL 主從複製
資料分布。負載均衡 備份高可用性和故障切換 mysql公升級測試 mysql實現複製可以看做是三個步驟 在主庫上把資料更改記錄到二進位制日誌 binary log 中 這些記錄被稱為二進位制日誌事件 在每次準備提交事務完成資料更新前,主庫將資料更新的事件記錄到二進位制日誌中,在記錄二進位制日誌後,主...