Mysql

從站無法在 MariaDB 10 中複製

  • February 9, 2022

我無法啟用基於行的複制。我正在嘗試在執行的兩個節點之間設置主從複製。

注意事項

  • 伺服器版本 10.0.23-MariaDB-log
  • 協議版本 10
  • UNIX 套接字 /var/lib/mysql/mysql.sock。

我遵循的場景是這樣的:

  1. 關閉 prod (mc1),進行冷備份並在 slave (mc2) 上恢復。
  2. 上主跑show master status;prodarchivedlogs-bin.000001 和 pos 為 582240
  3. 在slave中設置這些資訊。
  4. 啟動從站,它開始拋出錯誤消息:

160812 3:31:50

$$ ERROR $$從屬 SQL:無法在表 radius1.radacct 上執行 Update_rows_v1 事件;在 ‘radacct’ 中找不到記錄,Error_code: 1032; 處理程序錯誤 HA_ERR_KEY_NOT_FOUND;事件的主日誌 prodarchivedlogs-bin.000001,end_log_pos 587695,Gtid 0-1-79,內部 MariaDB 錯誤程式碼:1032 160812 3:17:18

$$ Warning $$從站:在“radacct”中找不到記錄錯誤程式碼:1032 160812 3:17:18

$$ ERROR $$執行查詢時出錯,從屬 SQL 執行緒中止。修復問題,用“SLAVE START”重啟slave SQL執行緒。我們停在日誌 ‘prodarchivedlogs-bin.000001’ 位置 587072

我已經根據我的知識嘗試了所有方法,但它只是不起作用。我嘗試使用mysqlbinlog工具提取到文件然後嘗試插入,即使它失敗了。

產品my.cnf如下

symbolic-links=0
innodb_buffer_pool_size=10G
innodb_data_home_dir= /var/lib/mysql/data2
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/redologs
innodb_log_file_size    = 256M
innodb_buffer_pool_size = 10000M
innodb_flush_method     = O_DIRECT
thread_stack    = 256K
max_connections=100000

expire_logs_days        = 5
max_binlog_size         = 100M

log-bin=/backup/archivedlogs/prodarchivedlogs-bin
binlog_format=row
server-id=1

從機my.cnf如下

skip-name-resolve
skip-slave-start
datadir=/var/lib/mysql/data1
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0

innodb_buffer_pool_size=10G
innodb_data_home_dir= /var/lib/mysql/data2
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/redologs
innodb_log_file_size    = 256M
innodb_buffer_pool_size = 10000M
innodb_flush_method     = O_DIRECT
thread_stack    = 256K
max_connections=100000
expire_logs_days        = 5
max_binlog_size         = 100M
log-bin=/backup/archivedlogs/prodarchivedlogs-bin
binlog_format=row
server-id=2

更多詳細資訊

主產品機器具有 40 GB RAM 和 16 核 CPU。

我遵循以下過程:

  1. 創建了代表使用者並授予了訪問權限。
  2. 關機產品。
  3. scp’ied 文件從 prod 到從機。
  4. 提出了主實例。
  5. 執行命令show master status\G;。記下了必應日誌和位置。
  6. 啟動了從屬實例
  7. 使用 bin 日誌文件和位置配置從配置文件
  8. 執行 start slave 命令。然後執行命令show slave status\G;,我開始看到錯誤消息

HA_ERR_KEY_NOT_FOUND.

還:

  • 試圖mysqlbinlog在 bin 日誌上執行查詢。報導稱,該文件正在被使用。
  • 執行命令刷新日誌;仍然沒有結果。

嘗試所有方法來解決這個問題。

任何幫助將不勝感激。

max_connections=100000——不合理,危險。對於同時連接的數量來說,即使是 1000 也可能是不必要的高。

10G 用於緩衝池——我假設您至少有 15GB 的 RAM?

聽起來兩台伺服器上的數據,至少對於 來說redacct,是不一致的。你最初是如何填充奴隸的?

您應該編輯原始問題以添加資訊,而不是自己回复。

但是,如果這些確實是您遵循的步驟:

brought up master instance.
ran the command show master status\G;. took note of bing log and the postion.

…請注意,您應該以相反的順序進行操作。從跑步大師那裡獲取座標是沒有意義的,這些座標對你沒有用。在重新啟動主機之前記下座標:這些座標描述了初始從屬狀態的狀態(您 scp 到從屬的文件)。

引用自:https://dba.stackexchange.com/questions/146742