1. 程式人生 > >mysql主從複製(單向同步)

mysql主從複製(單向同步)

0、環境

系統:ubuntu14.04(阿里雲\騰訊雲)

資料庫:mysql5.6

主:阿里雲ubuntu

從:騰訊雲ubuntu

預設需要同步的資料庫已經事先建立。

1、原理

我們設定一個主庫(Master),和一個從庫(Slave或Secondary)。從庫從主庫複製資料內容,目的為災難備份、讀寫分離等。

主庫開啟binary log,開啟後每一次操作更新、修改、刪除等都會記錄在案,所以從庫的同步過程其實就是獲得這些過程,然後將現場還原,就達到了資料同步的目的。

2、開啟mysql遠端連線

GRANT ALL PRIVILEGES ON *.* TO
'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

PS:使用mysql的root使用者和遠端是很危險的,而且最後WITH GRANT OPTION還能授權,這裡只是示範。最安全肯定是ssh登入再去訪問資料庫,又或者新建一個mysql使用者專門用於同步。

上面的語句完成後,就可以用:

使用者名稱為:root

密碼為:123456(這個設定的密碼不是原來ssh登入進去的密碼,當然你也可以設定成一樣的吧)

shell> mysql -u root -h xx.xx.xx.xx -p
shell> 123456

檢視使用者是否可以通過網路訪問


[email protected]:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 101
Server version: 5.6.33-0ubuntu0.14.04.1-log (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is
a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select user , host from user; +------------------+-------------------------+ | user | host | +------------------+-------------------------+ | root | % | | root | 127.0.0.1 | | root | ::1 | | root | izwz96uh8912ewgq9yv5nxz | | debian-sys-maint | localhost | | root | localhost | +------------------+-------------------------+ 6 rows in set (0.01 sec) mysql>
mysql -u root -p
use mysql
select user , host from user;

看到有個%號說明那個使用者可以任意host遠端直接登入mysql了。

最後還有一個要注意的地方,將/etc/mysql/my.conf的配置檔案的bind-address行註釋掉,又或者改成bind-address = 0.0.0.0

3、配置主伺服器

cd /etc/mysql
cp my.cnf mycnf.bak
nano my.cnf

修改配置檔案:

server-id               = 1(服務id,這個需要每個不同)
log_bin                 = /var/log/mysql/mysql-bin.log(這是主伺服器,必須開啟log_bin,這句就是開啟了)
binlog_format           =mixed(混合比較好)
binlog_do_db            = master(需要同步的資料庫,如果多個數據庫,重複這個配置)
binlog_ignore_db        = mysql(排除不需要同步的資料庫,如果多個數據庫,重複這個配置)

都是有預設的,去除前面的#號就行了,binlog_format=mixed這句是沒有的,自己加。

重啟mysql,讓配置生效:

sudo service mysql restart

得到當前binlog資訊:


mysql> show master status;
+------------------+----------+--------------+------------------+---------------           ----+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_          Set |
+------------------+----------+--------------+------------------+---------------           ----+
| mysql-bin.000003 |      232 | master       | mysql            |                              |
+------------------+----------+--------------+------------------+---------------           ----+
1 row in set (0.03 sec)

我們關注File(mysql-bin.000003)和Position(232),這兩個狀態是我們需要同步需要用到的,此時不要動資料庫了,不管是增刪改查都會改變Posituion。

你這裡看到Binlog_Do_DB是叫做master,是因為我資料庫名就叫master,其他名字也可以的,看你具體建立。

4、配置從伺服器

首先檢查能不能遠端主資料庫:

shell> mysql -u root -h xx.xx.xx.xx -p
shell> (輸入密碼123456,因為我們主服務其授權的時候的密碼是123456) 

編輯mysql配置檔案:

cd /etc/mysql
cp my.cnf mycnf.bak
nano my.cnf

修改配置檔案:

server-id               = 2(服務id,這個需要每個不同)
log_bin                 = /var/log/mysql/mysql-bin.log(這是主伺服器,必須開啟log_bin,這句就是開啟了)
binlog_format           =mixed(混合比較好)
binlog_do_db            = master(需要同步的資料庫,如果多個數據庫,重複這個配置)
binlog_ignore_db        = mysql(排除不需要同步的資料庫,如果多個數據庫,重複這個配置)

重啟mysql服務:

sudo service mysql restart

讓主伺服器同步資料到從伺服器

mysql> stop slave;
mysql> change master to master_host='xx.xx.xx.xx', master_user='root',master_password='123456',
master_log_file='mysql-bin.000003',
master_log_pos=232;(保證是最新的position)
mysql> start slave;

檢視從資料庫資訊:

show slave status;

此時你看到

Slave_IO_Running | Slave_SQL_Running
| Yes              | Yes     

就說明配置成功了。

這時你總算可以去操作主資料庫了。

這時你建立一個表插入資料你可以看到從資料庫也改變了。

相關推薦

mysql主從複製單向同步

0、環境 系統:ubuntu14.04(阿里雲\騰訊雲) 資料庫:mysql5.6 主:阿里雲ubuntu 從:騰訊雲ubuntu 預設需要同步的資料庫已經事先建立。 1、原理 我們設定一個主庫(Master),和一個從庫(S

mysql主從複製基於gtid

mysql的主從複製 主伺服器將更新寫入二進位制日誌檔案,並維護檔案的一個索引以跟蹤日誌迴圈。這些日誌可以記錄傳送到從伺服器的更新.當一個從伺服器連線主伺服器時,它通知主伺服器從伺服器在日誌中讀取的最後一次成功更新的位置。從伺服器接收從那時起發生的任何更新,然後封鎖並等待主

Mysql主從複製GTID,一主兩從

複製原理: Mysql中有一種日誌叫做bin日誌(二進位制日誌)。這個日誌會記錄下所有修改了資料庫的SQL語句(insert,update,delete,ALTER TABLE,grant等等)。 主從複製的原理其實就是把主伺服器上的BIN日誌複製到從伺服器上執行一遍,這樣

MySQL主從複製windows版

1.概要 1.1 配置過程 1.2 複製型別和半同步複製(可選) 1.3 簡單測試 1.4主庫故障及崩潰處理 1.5 從庫故障及崩潰處理 配置過程 2.1修改主伺服器my.ini    [mysqld]  log-bin=mysql-bin   //[必須]啟用

Linux下Mysql主從複製從庫是MariaDB

排版不易,希望能幫助到大家 一、準備2臺伺服器 ip:120.168.0.1(主)、120.168.0.2(從) 二、配置檔案         1. Linux中的MySQL配置檔案都在/etc/my.cnf(windows中的配置檔案為mysql.ini)    

以Docker方式實現MySql 主從複製實踐篇

本文實踐了用Docker方式來實現基於binlog的MySql主從複製。關於MySql主從複製的原理將在下一篇中進行講解。 一些資料的本地儲存目錄結構 mysql >tree

mysql主從複製版本不一致

      mysql主從複製要求版本最好一致,至少前兩個版本號相同,因為官方推薦這樣,最主要還是怕版本不一致帶來的不相容問題;最近剛好在學習mysql主從複製,我已經有了兩臺伺服器,但是mysql版本並不一致,但是既然版本不一致有可能導致不相容,那麼我就讓低版本作為主ma

MySQL主從複製環境搭建

一、本教程是基於windows 10_64 位系統,MySQL Server 5.5_64 環境下進行搭建的 二、環境搭建步驟: 將本機MySQL服務停止 2.找到MySQL安裝的路徑複製其整個資料夾,將其複製到其他位置中,這裡我複製了兩個

mysql主從複製Windows虛擬機器安裝兩個mysql

原理:主伺服器(Master)負責網站NonQuery操作,從伺服器負責Query操作,使用者可以根據網站功能模特性塊固定訪問Slave伺服器,或者自己寫個池或佇列,自由為請求分配從伺服器連線。主從伺服器利用MySQL的二進位制日誌檔案,實現資料同步。二進位制日誌由主伺服器

Mysql 5.7.1.0 實現主從複製master-slave

開始前 請 保證兩臺主機的 防火牆、防毒軟體 不會阻止兩臺主機的正常通訊 。下面通過6步操作實現主從複製!

Mysql主從配置超級簡單

配置 ges ide wait mas 建立 slave end event fec 1、準備(版本和數據保持一致):主服務器 192.168.2.41(主)從服務器 192.168.2.42(從) 2、修改主服務器master: #vi my.cnf [mysqld

mysql主從複製實現資料庫同步

1、Introduction 相信看過這篇文章的童鞋,都摩拳擦掌,躍躍一試了吧? 今天我們就來一次mysql主從同步實戰! 2、環境說明 os:ubuntu16.04 mysql:5.7.17 下面的實戰演練,都是基於上面的環境。當然,其他環境也大同小異。

Redis實現主從複製Master&Slave

         由於前段時間公司專案比較趕,一直抽不出時間寫部落格,今天偷空寫一篇吧。前面給大家講解了單機版redis的基本操作,現在繼續給大家講解一下Redis的進階部分,主從複製和讀寫分離。 一、Master&Slave是什麼?          也就是我們所

Redis 主從複製服務叢集

1、首先複製倆個slave出來 cp redis,conf redis6380.conf cp redis,conf redis6381.conf 2、進入配置檔案中修改以下配置 2.1、主伺服器設定,要關閉rdb,當從伺服器上開啟aof,那麼主伺服器就不要開啟了,反之! 2.2、設定s

redis基礎簡介- 主從複製master & slave

簡介 redis主從複製配置和使用都非常的簡單。通過主從複製可以允許多個 slave 擁有和 master 相同的資料庫副本。 redis主從複製的特點: master可以擁有多個slave 多個 slave 除了可以連線同一個master之外,還可以連

MySQL複製Group Replication

本文將介紹一下MySQL組複製以及如何安裝和配置、監控組。 組複製是MySQL伺服器外掛,通過這種外掛可以實現彈性、高可用、容錯複製拓撲結構。 複製組能夠以一種自動優先選擇的單主模式執行,在某個時間只有一個伺服器接受更新 。但是對於更高優先順序的使用者,組能夠

Mysql主從複製、半同步複製、並行複製

一、主從複製 1.主從複製原理 MySQL之間資料複製的基礎是二進位制日誌檔案(binary log file)。一臺MySQL資料庫一旦啟用二進位制日誌後,其作為master,它的資料庫中所有操作都會以“事件”的方式記錄在二進位制日誌中,其他資料庫作為

mysql主從複製搭建

mysql通過什麼實現主從複製? 通過mysql本身自帶的binlog日誌檔案來實現主從複製,mysql會把所有的操作儲存在binlog日誌中,從庫同步主庫中的binlog日誌,從庫得到主庫的操作記錄,從庫再執行記錄,實現了主從複製,資料一致。 主從優勢:資料庫備份  &nbs

Linux下mysql主從複製配置CentOS7

主從複製需要注意: 1、資料庫版本必須一致 2、資料庫名稱必須一致   例如db888 3、配置主資料庫開啟二進位制日誌 4、主資料庫、從資料庫必須具有一個唯一的server-id 配置主從資料庫複製: 一:操作主庫 1、修改主庫的配置檔案     vi /e

【Mycat】資料庫效能提升利器——Mycat實現Mysql主從複製和讀寫分離

一、前言       在前一篇文章中,小編向大家 介紹了使用Mycat水平切分資料庫。可以說,使用了水平分庫後,資料庫提升還是很高的。如果想更高的提高資料庫效能,就可以考慮對Mysql進行主從複製和讀寫分離了。       在這篇部落格中,小編就向大家介紹基於Mycat的M