日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql主从位点保存时间_MySQL主从备份

發布時間:2025/4/5 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql主从位点保存时间_MySQL主从备份 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文目錄結構:

1.主從復制

1.1簡介

1.2實操

1.3問題處理

其他:my.cnf主從配置參數

1.主從復制

1.1簡介

原理

主服務器數據庫的每次操作都會記錄在二進制日志文件mysql-bin.xxx中。從服務器的I/O線程使用專用帳號登陸到主服務器中讀取該二進制文件,并將文件內容寫入到自己本地的中繼日志relay-log文件中。然后從服務器的SQL線程會根據中繼日志中的內容執行SQL語句,這要求兩臺服務器有同樣的初態。

邏輯步驟:

1)主服務器數據庫的每次操作都會記錄在二進制日志文件mysql-bin.xxx中.

2)從庫的IO線程向主庫的主進程發送請求,主庫驗證從庫,交給主庫IO線程負責數據傳輸

3)主庫IO線程對比從庫發送過來的master.info里的信息,將binlog文件信息,偏移量和binlog文件名等發送給從庫

4)從庫接收到信息后,將binlog信息保存到relay-bin中,同時更新master.info的偏移量和binlog文件名

5)從庫的SQL線程不斷的讀取relay-bin的信息,同時將讀到的偏移量和文件名寫道relay-log.info文件,binlog信息寫進自己的數據庫,一次同步操作完成。

6)完成上次同步后,從庫IO線程不斷的向主庫IO線程要binlog信息

形式:

一主一從,一主多從,多主一從,主主復制,聯級復制。

用途:

實時災備,讀寫分類,備份。

條件:

主庫開啟binlog日志

主從server-id不同

從庫可以連到主庫

1.2.實操配置

1)同步初態

先將主機數據庫加鎖,避免數據改變

>use tatabase_name;

>flush tables with read lock;

再將主機數據備份

mysqldump -uroot -pxxx database_name > database_name.sql

備份完后解鎖數據庫

>unlock tables;

在從機從機相同的數據庫,然后導入數據

>create table database_name;

>use database_name;

>source database_name.sql;

2)主機打開二進制日志

在/etc/my.cnf主要配置如下內容:

log-bin=my-bin#開啟二進制日志

server-id=1#設置為主庫,server-id值為1

修改后重啟mysql服務

3)查看主機日志記錄狀態

>show master status\G

顯示內容格式如下,記住此狀態,后面用到

***************** 1. row ****************

File: my-bin.000001 #當前記錄的日志

Position: 553 #日志中記錄的位置

Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

4)主機登錄mysql創建允許從服務器同步數據的賬號

> grant replication slave on *.* to 'user_name'@'slave_ip' identified by 'pass_word';

5)配置從機mysql,在從機/my.cnf配置如下內容:

log-bin=my-bin #開啟二進制日志

server-id= 2 #主數據庫id為1,不能相同。

replicate_wild_do_table=copytest.% #只同步copytest庫下的表,可以不配置此項

relay_log=mysqld-relay-bin #記錄中繼日志

log-slave-updates=YES #從服務器同步后記錄日志

也可以添加以下兩行指定開啟日志的庫:

binlog_do_db=db_name1;db_name2 --指定同步的數據庫

binlog_ignore_db=db_name3;db_name4--指定不同步的數據庫

注意:如果配置binlog_do_db其他庫都將被忽略

修改完后重啟mysql

6)根據前面在主機配置的賬號,在從機登錄mysql后打開同步功能

> change master to master_host='master_ip',master_user='user_name',master_password='pass_word',master_log_file='my-bin.000001',master_log_pos=553;

配置完后從起msyql的slave服務

> slave start;

7)查看從服務器是否成功開啟同步

>show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.225

Master_User: user_name

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: my-bin.000001

Read_Master_Log_Pos: 1114

Relay_Log_File: mysqld-relay-bin.000004

Relay_Log_Pos: 1260

Relay_Master_Log_File: my-bin.000002

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table: test.%

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 1114

Relay_Log_Space: 1563

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: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1 row in set (0.00 sec)

其中:Slave_IO_Running和Slave_SQL_Running的狀態都是YES,說明同步開啟成功。

現在就可以去主服務器上的test庫下創建表開測試同步了

1.3問題處理

1)主服務器:show master status\G 輸出Empty set

參考博文:https://blog.csdn.net/lanyang123456/article/details/85221071

原因:MySQL沒有開啟日志,可以登錄MySQL如下查看

mysql> show variables like '%log_bin%';

+---------------------------------+-------+

| Variable_name | Value |

+---------------------------------+-------+

| log_bin | OFF |

| log_bin_basename | |

| log_bin_index | |

| log_bin_trust_function_creators | OFF |

| log_bin_use_v1_row_events | OFF |

| sql_log_bin | ON |

+---------------------------------+-------+

6 rows in set (0.00 sec)

可以看到log_bin為關閉狀態,在mysql 配置文件 /etc/my.cnf中

[mysqld]下添加:

log-bin=my-bin

然后重啟MySQL,再次查看master狀態:

mysql> SHOW MASTER STATUS\G

*************************** 1. row ***************************

File: my-bin.000001

Position: 245

Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

log-bin配置項表示binlog的base name,產生的日志文件名類似:my-bin.00001,my-bin.00002...

show master status命令列出了日志位點信息,包括binlog file,binlog position等。

2)從服務器:show slave status\G 發現Slave_IO_Runing:No

參考博文:https://blog.csdn.net/xu1314/article/details/7693906

參考博文:https://www.cnblogs.com/l-hh/p/9922548.html

注意查看從機 Last_IO_Error,下面原因可能不準,但這兒是保存信息,可以根據這定位

可能原因:

a)slave沒有訪問master的權限,應檢查master的權限配置和slaver的登錄master賬號配置,以及通信。

b)slave的master日志文件配置與主服務器不一致

使用show slave status\G 查看從機狀態,使用show master status\G 查看主機狀態,此時slave的Last_IO_Error提示:

Coud not find find first log file name in binary log index file --文件名不對

Misconfigured master -server id was not set --主機的server-id沒有配置,要配置且為1,然后從起主機的MySQL和從機的slave

Client requested master to start replication from impossible position;the... --從機讀取主機日志位置超過主機日志最大位置

本人原因:文件不對和主機server-id未配置,處理如下

主機配置my.cnf中的server-id,值為1

主機從起msyql

停止從機slave:slave stop

從機修改配置:CHANGE MASTER TO MASTER_LOG_FILE='主機的File', MASTER_LOG_POS=0或比主機的Position小的正數;

從機啟動slave:slave start

其他1:my.cnf主從配置主要參數

設置主數據庫的參數信息,主要設置字段為server-id,log_bin,binlog_do_db ,其他字段參考參數定義自行設置, 配置文件中相關參數定義如下:

總結

以上是生活随笔為你收集整理的mysql主从位点保存时间_MySQL主从备份的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。