mysql主從複製及資料備份恢復
1、主從伺服器分別作以下操作:
1.1、版本一致
1.2、初始化表,並在後臺啟動mysql
1.3、修改root的密碼
2、修改主伺服器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啟用二進位制日誌
server-id=222 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
3、修改從伺服器slave:
#vi /etc/my.cnf
[mysqld]
log -bin=mysql-bin //[不是必須]啟用二進位制日誌
server-id=226 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
4、重啟兩臺伺服器的mysql
systemctl restart mysqld
5、在主伺服器上建立帳戶並授權slave:
#/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* to '賬戶'@'從伺服器的ip' identified by '密碼';
一般不用root帳號,%
表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,加強安全。
6、登入主伺服器的mysql,查詢master的狀態
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:執行完此步驟後不要再操作主伺服器MYSQL,防止主伺服器狀態值變化
7、配置從伺服器Slave:
mysql>change master to master_host='192.168.71.128',master_user='root',master_password='root',master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要斷開,308數字前後無單引號。
Mysql>start slave; //啟動從伺服器複製功能
8、檢查從伺服器複製功能狀態:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222 //主伺服器地址
Master_User: mysync //授權帳戶名,儘量避免使用root
Master_Port: 3306 //資料庫埠,部分版本沒有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步讀取二進位制日誌的位置,大於等於Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此狀態必須YES
Slave_SQL_Running: Yes //此狀態必須YES
......
注:Slave_IO及Slave_SQL程序必須正常執行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
以上操作過程,主從伺服器配置完成。
9、主從伺服器測試:
主伺服器Mysql,建立資料庫,並在這個庫中建表插入一條資料:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)
mysql> use hi_db;
Database changed
mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
從伺服器Mysql查詢:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db | //I'M here,大家看到了吧
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use hi_db
Database changed
mysql> select * from hi_tb; //檢視主伺服器上新增的具體資料
+------+------+
| id | name |
+------+------+
| 1 | bobu |
+------+------+
1 row in set (0.00 sec)
10、完成:
編寫一shell指令碼,用nagios監控slave的兩個yes(Slave_IO及Slave_SQL程序),如發現只有一個或零個yes,就表明主從有問題了,發簡訊警報吧。
MySQL主從同步故障-Slave_SQL_Running: No
故障現象:
進入slave伺服器,執行:
mysql> show slave status\G
.......
Relay_Log_File: localhost-relay-bin.000535
Relay_Log_Pos: 21795072
Relay_Master_Log_File: localhost-bin.000094
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
......
解決辦法一、
首先停掉Slave服務:
mysql>stop slave;
到主伺服器上檢視主機狀態:
記錄File和Position對應的值
進入master
mysql> show master status;
+----------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 | | |
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
然後到slave伺服器上執行手動同步:
mysql> change master to master_log_file='loccalhost-bin.000094',master_log_pos=33622483;
mysql> start slave;//開啟同步
再查詢狀態看是否正常
mysql>show slave status\G
*************************** 1. row ***************************
........
Master_Log_File: localhost-bin.000094
Read_Master_Log_Pos: 33768775
Relay_Log_File: localhost-relay-bin.000537
Relay_Log_Pos: 1094034
Relay_Master_Log_File: localhost-bin.000094
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
注意:手動同步需停止主庫的寫操作!
解決辦法二、
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
說明:
Slave_IO_Running:連線到主庫,並讀取主庫的日誌到本地,生成本地日誌檔案
Slave_SQL_Running:讀取本地日誌檔案,並執行日誌裡的SQL命令。
資料備份:
格式:mysqldump -h連結ip -P(大寫)埠 -u使用者名稱 -p密碼資料庫名>d:XX.sql(路勁)
示例:mysqldump -uroot -p8888 htgl>d:\htgl.sql
如出現報錯Warning: Using a password on the command line interface can be insecure.
則需要修改配置檔案:
vim /etc/mysql/my.cnf
[mysqldump]
user=your_backup_user_name
password=your_backup_password
修改完配置檔案,重啟MyQL後,只需要執行 mysqldump 指令碼就可以了。備份指令碼中不需要涉及使用者名稱密碼相關資訊。示例:mysqldump htql>d:\htql.sql
資料恢復:
1、系統命令列
格式:mysql -h連結ip -P(大寫)埠 -u使用者名稱 -p密碼 資料庫名 < d:XX.sql(路勁)
mysql -uusername -ppassword db1 <tb1tb2.sql
2、或mysql命令列
mysql>
user db1;
source tb1_tb2.sql;
3、恢復整個資料庫的方法:
mysql -u b_user -h 101.3.20.33 -p'H_password' -P3306 < all_database.sql
相關推薦
mysql主從複製及資料備份恢復
1、主從伺服器分別作以下操作: 1.1、版本一致 1.2、初始化表,並在後臺啟動mysql 1.3、修改root的密碼 2、修改主伺服器master: #vi /etc/my.cnf [mysqld
redis主從複製 從而 資料備份和讀寫分離
蝸牛Redis系列文章目錄http://www.cnblogs.com/tdws/tag/NoSql/ 爬蟲轉載註明地址本文地址—部落格園蝸牛 http://www.cnblogs.com/tdws/p/5705782.html 雲伺服器過期了,這次測試就放在本地(127.0.0.1)。三個
[MySQL高階](七) MySQL主從複製及讀寫分離實戰
1. 簡介 隨著技術的發展,在實際的生產環境中,由單臺MySQL資料庫伺服器不能滿足實際的需求。此時資料庫叢集就很好的解決了這個問題。採用MySQL分散式叢集,能夠搭建一個高併發、負載均衡的叢集伺服器。在此之前我們必須要保證每臺MySQL伺服器裡的資料同步。資料同步我們
MySQL 主從複製及原理
1.主從複製配置a. 環境:CentOS7.4,IP地址分別是主庫:192.168.11.146,從庫:192.168.11.238,主庫版本應低於或等於從庫版本,這裡用的都是MySQL 8.0.13b.主庫配置/etc/my.cnf檔案 [mysqld] #一般配置選項user=mysqlport=33
HBase-常用Shell操作及資料備份恢復
1、常用的 Shell 操作 1) satus 例如:顯示伺服器狀態: 2) whoami 例如,顯示 HBase 當前使用者: 3) list 顯示當前所有的表: 4) count 例如,統計指定表的記錄數: 5) describe 展示表
MySQL安裝及資料備份和恢復
MySQL二進位制格式安裝 首先下載mysql二進位制安裝包 //下載地址 [[email protected] src]# wget https://downloads.mysql.com/archives/get/file/mysql-5.7.22-lin
學一點 mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理及實踐
server counter ror 位置 正在 大型 主循環 備份 配置詳解 雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫數據一致。 這樣做的好處多。 1. 可以做災備,其中一個壞了可
redis持久化,主從及資料備份
現在在專案裡已經大量使用redis了,為了提高redis的效能和可靠性我們需要知道和做到以下幾件事: 常用記憶體優化手段與引數 redis的效能如何是完全依賴於記憶體的,所以我們需要知道如何來控制和節省記憶體。 首先最重要的一點是不要開啟Redis的VM選項,即虛擬記憶
ip變更造成的redis叢集不可用的解決及資料備份和恢復
今天開啟電腦,連線redis,發現連線不上了... 原因是找不到主機...檢視虛擬機器ip,發現ip變了... 於是想到之前配置redis叢集的時候,在redis.conf中配置了bind為虛擬機
MySQL主從複製原理、半同步操作步驟及原理
1.1 企業Linux運維場景資料同步方案 1.1.1 檔案級別的異機同步方案 1、scp/sftp/nc 命令可以實現遠端資料同步。 2、搭建ftp/http/svn/nfs 伺服器,然後在客戶端上也可以把資料同步到伺服器。 3、搭建sa
【MySQL主從複製原理及搭建全過程】
目錄 準備工作 主從複製原理 開始搭建主從複製 本文將使用mariaDB資料庫實現主從複製,其步驟與MySQL資料庫無差異。 MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社群在維護,採用GPL授權許可。 開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將M
MySQL主從複製半同步複製原理及搭建
在MySQL5.5之前的版本中,MySQL的複製是非同步複製,主庫和從庫的資料之間存在一定的延遲,比如網路故障等各種原因,這樣子容易存在隱患就是:當在主庫寫入一個事務成功後並提交了,但是由於從庫延遲沒有及時得到主庫推送的Binlog日誌時,主庫突然宕機了,那麼此時從庫就可能損失這個事務,從而造成主從不一致的狀
mysql主從複製一個小錯誤導致從庫不更新資料
由於歷史遺留問題,我們的MySQL主從庫的表結構不一致,主庫的某個表tableA比從庫表tableA少了一個欄位。 當嘗試在主庫上更改表結構時,這行alter語句會隨著binlog同步到從庫,如果從庫執行這行語句時出錯,主從同步執行緒就會自動停止,那樣只能人為手動處理錯誤,然後再啟動slave上的主從同步執
MySQL主從複製之基於GTID及多執行緒
一、Mysql 5.6 複製管理工具 官方下載:http://dev.mysql.com/downloads/tools/utilities/#downloads mysqlreplicate 快速啟動複製 mysqlrplcheck 快速檢查複製環境
MySQL 主從複製原理及建立過程
前言 mysql 是我工作中常用的資料庫,不過僅限於 SQL 操作,通過阿里雲的 RDS 可以快速生成一個例項,對於其原理並不甚瞭解,所以閒暇之餘瞭解了一下,並記錄下來,與大家共享、交流。 目錄 一、MySQL複製技術 1. 複製的
mysql主從複製、讀寫分離到資料庫水平拆分及庫表雜湊
web專案最原始的情況是一臺伺服器只能連線一個mysql伺服器(c3p0只能配置一個mysql),但隨著專案的增大,這種方案明顯已經不能滿足需求了。Mysql主從複製,讀寫分離:上面的方案使用mysql-Proxy代理,分發讀寫請求,寫操作轉發到Mysql主伺服器,讀操作轉發
mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理及實踐
雙機熱備的概念簡單說一下,就是要保持兩個資料庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個資料庫資料一致。 這樣做的好處多。 1. 可以做災備,其中一個壞了可以切換到另一個。 2. 可以做負載均衡,可以將請求分攤到其中任何一臺上,提高網站
Mysql主從複製從庫狀態雙Yes及seconds_behind_master為0的故障分析
在監控Mysql主從叢集的時候,通常會使用以下三個引數 Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0 實際上,這種方式是有問題的。下面轉載的兩篇文章有詳細的描述。 簡單來說:如
linux系統下實現mysql熱備份詳細步驟(mysql主從複製)
主從的作用: 1.可以當做一種備份方式 2.用來實現讀寫分離,緩解一個數據庫的壓力 MySQL主從備份原理: Mysql的主從複製至少是需要兩個Mysql的服務,當然Mysql的服務是可以分佈在不同的伺服器上,也可以在一臺伺服器上啟動多個服務。 如果想配置成為同一臺上的話,注意安裝的時候,選擇
Window環境下配置MySQL 5.6的主從復制、備份恢復
end inf content 復制 grant -h 正常的 mysql 5.6 出現 原文:Window環境下配置MySQL 5.6的主從復制、備份恢復1、環境準備 Windows 7 64位 MySQL 5.6 主庫:192.168.103.