首頁 資料庫 mysql教程 mysql5.6.14主从复制(也称mysql AB复制)环境配置方法

mysql5.6.14主从复制(也称mysql AB复制)环境配置方法

Mar 30, 2017 pm 05:41 PM

一、mysql主(称master)从(称slave)复制的原理:

      (1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
      (2).slave将master的binary log events拷贝到它的中继日志(relay log)
      (3).slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

附简要原理图:

二、mysql主从复制支持的类型:

    (1).基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句.MySQL默认采用基于语句的复制,效率比较高

word-spacing: 0px">   (2).基于行的复制:把改变的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的 . 从mysql5.0开始支持
word-spacing: 0px">   (3).混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制.

三、主从配置需要注意的地方:

   (1).主DB server和从DB server数据库的版本一致
   (2).主DB server和从DB server数据库数据一致[ 这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录]
   (3).主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一

四、主从配置的简要步骤:

附简要示意图:

1.主DB SERVER上的配置

   (1).安装数据库
   (2).修改数据库配置文件,指明server_id,开启二进制日志(log-bin)
   (3).启动数据库,查看当前是哪个日志,position号是多少
   (4).登陆数据库,授权用户[ip地址为从机IP地址,如果是双向主从,这里的还需要授权本机的IP地址(此时自己的IP地址就是从IP地址)]
   (5).备份数据库[记得加锁和解锁]
   (6).传送备份到从DB server上
   (7).启动数据库

以下步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:

   (1).登陆数据库,指定主DB server的地址,用户,密码等信息[此步仅双向主从时,需要]

   (2).开启同步,查看状态

2.从DB SERVER上的配置

  (1).安装数据库
  (2).修改数据库配置文件,指明server_id[如果是搭建双向主从的话,也要开启二进制日志(log-bin)]
  (3).启动数据库,还原备份
  (4).查看当前是哪个日志,position号是多少[单向主从此步不需要,双向主从需要]
  (5).指定主DB server的地址,用户,密码等信息
  (6).开启同步,查看状态

五、单向主从环境[也称 mysql A/B复制]的搭建案例:

1.主DB server和从DB server都安装相应版本的数据库,我的两台DB server都已经安装好(5.6.14版本),都会是双实例,这里就不演示安装,可以参考mysql源码编译安装和mysql多实例配置两篇文章
注:两台机器的的selinux都是disable(永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled),防火墙可以选择关闭,开启的话也行[不行的话,添加防火墙策略]
2.修改主DB server的配置文件(/etc/my.cnf),开启日志功能,设置server_id值,保证唯一[client102为主DB server]

[root@client102 scripts]# vim /etc/my.cnf 
# 修改配置文件里,下面两个参数: 
# 设置server_id,一般建议设置为IP,或者再加一些数字 
server_id =102
# 开启二进制日志功能,可以随便取,最好有含义 
log-bin=mysql3306-bin
登入後複製

3.启动数据库服务器,并登陆数据库,授予相应的用户用于同步

# 我这里是多实例mysql,所以启动是这样的,如果大家是单实例的,就直接启动就可以[/etc/init.d/mysqld start] 
[root@client102 scripts]# mysqld_multi start 3306 
# 登陆mysql 服务器 
[root@client102 scripts]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p 
# 授予用户权限用于主从同步 
mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong'; 
Query OK, 0 rows affected (0.00 sec) 
# 刷新授权表信息 
mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec) 
# 查看position 号,记下position 号(很重要,从机上需要这个position号和现在的日志文件,我这里是414和mysql3306-bin.000001) 
mysql> show master status; 
+----------------------+----------+--------------+------------------+-------------------+
| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+----------------------+----------+--------------+------------------+-------------------+
| mysql3306-bin.000001 |   414 |       |         |          | 
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
登入後複製

4.为保证主DB server和从DB server的数据一致,这里采用主备份,从还原来实现初始数据一致

代码如下:

# 临时锁表 
mysql> flush tables with read lock; 
# 我这里实行的全库备份,在实际中,我们可能只同步某一个库,可以只备份一个库 
# 新开一个终端,执行如下操作 
[root@client102 data]
# mysqldump  -p3306 -uroot -p  -S /usr/local/mysql/mysqld3306.sock  --all-databases > /tmp/mysql.sql 
# 解锁 
mysql> unlock tables; 
# 将备份的数据传送到从机上,用于恢复 
 [root@client102 data]# scp  /tmp/mysql.sql  root@192.168.1.100:/tmp
登入後複製

5.从DB server配置文件只需修改一项,其余用命令行做

代码如下:

[root@client100 ~]# vim /etc/my.cnf 
# 设置server_id,一般建议设置为IP,或者再加一些数字 
server_id =100
登入後複製

6.启动数据库,还原备份数据

代码如下:

# 启动数据库 
[root@client100 ~]# mysqld_multi start 3306 
# 还原主DB server备份的数据 
[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql
登入後複製

7.登陆数据库,添加相关参数(主DBserver的ip/端口/同步用户/密码/position号/读取哪个日志文件)

代码如下:

[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p 
mysql> change master to 
    -> master_host=&#39;192.168.1.102&#39;, 
    -> master_user=&#39;kongzhong&#39;, 
    -> master_password=&#39;kongzhong&#39;, 
    -> master_port=3306, 
    -> master_log_file=&#39;mysql3306-bin.000001&#39;, 
    -> master_log_pos=414; 
#/*  下面是一部分注解: 
#/*  指定主DB server的IP地址 
master_host=&#39;192.168.1.102&#39;
#/*  指定用于同步的用户[这个就是我们在主DB server授权的用户] 
master_user=&#39;kongzhong&#39;
#/* 指定用于同步的用户的密码 
master_password=&#39;kongzhong&#39;
#/* 指定主DB server的端口[下面一个例子,可以重点看这个] 
master_port=3306
#/*  指定从DB server 从哪个日志文件开始读[在主DB server上使用show master status查看到日志] 
master_log_file=&#39;mysql3306-bin.000001&#39;
#/*  指定 从哪个POSITION号开始读 
master_log_pos=414
# 开启主从同步 
mysql> start slave; 
# 查看主从同步状态 
mysql> show slave status\G; 
# 主要看以下两个参数:[这两个参数如果是yes就表示主从同步正常] 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes
登入後複製

8.下面大家就可以在主DB server上新建一个表,看是否能同步到从DB server上,我这里就不测试了

[注:千万不要在从DB server手动插入数据,那样数据就不一致,主从就会断开,需要重新配置了]

如果有问题,可以尝试关闭IPTABLES(/etc/init.d/iptables stop)和selinux(setenforce 0:临时关闭selinux,永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled)

9.上面所搭建的是单向主从,也是用的比较多的,有人想了解双向主从是如何搭建,其实,就是主DB server和从DB sever都开启日志功能,然后在主DB SERVER执行授权用户[这里授权的是自己作为从服务器,也就是这里的IP地址是主DB server的IP地址],然后再在主DB server上进行chang master操作.有不理解的可以留言询问.

 以上就是mysql5.6.14主从复制(也称mysql AB复制)环境配置方法的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1320
25
PHP教程
1269
29
C# 教程
1249
24
Win11怎麼配置python環境變數?win11python新增環境變數的技巧 Win11怎麼配置python環境變數?win11python新增環境變數的技巧 Feb 29, 2024 pm 04:30 PM

Win11系統作為最新的Windows作業系統,使用者在使用時可能會遇到一些設定問題。其中,配置Python環境變數是一個常見的需求,因為它可以讓使用者在任何位置輕鬆地使用Python指令。本文將介紹如何在Win11系統中配置Python環境變量,以便於使用者能夠更方便地使用Python程式語言。 1.桌面【右鍵】點選此電腦,在開啟的選單項目中,選擇【屬性】;2、接著,相關連結下,找到並點選【進階系統設定】;3、系統屬性窗口,點選下方的【環境變數】;4、環境變數窗口,系統變數下,選擇【Path】,再點擊

PHP實作MySQL資料庫主從複製的方法 PHP實作MySQL資料庫主從複製的方法 May 17, 2023 am 08:18 AM

隨著互聯網的快速發展,Web應用程式越來越多地整合了資料庫操作。 MySQL作為一款世界知名的關聯式資料庫系統,使用廣泛。在高並發的Web應用中,MySQL主從複製是提高資料庫效能和可用性的重要方式。本文將介紹如何使用PHP實作MySQL資料庫主從複製。一、什麼是MySQL主從複製MySQL主從複製是指將一個MySQL資料庫伺服器的資料複製到另一個伺服器上

建構高可用的MySQL叢集:主從複製與負載平衡的最佳實務指南 建構高可用的MySQL叢集:主從複製與負載平衡的最佳實務指南 Sep 09, 2023 am 10:57 AM

建立高可用的MySQL叢集:主從複製與負載平衡的最佳實踐指南近年來,隨著互聯網的快速發展,資料庫已成為大部分Web應用的核心資料儲存和處理引擎之一。在這個場景下,高可用性和負載平衡成為了資料庫架構設計中的重要考量。而MySQL作為最受歡迎的開源關係型資料庫之一,其叢集化部署方案備受關注。本文將介紹如何透過MySQL主從複製與負載平衡實現高可用的資料庫集群

零基礎學習Go語言:環境配置不再成為障礙 零基礎學習Go語言:環境配置不再成為障礙 Feb 21, 2024 pm 02:12 PM

Go語言是一種由Google開發的靜態型別、編譯型的程式語言。它在現代程式語言中擁有獨特的地位,被廣泛應用於雲端運算、網路程式設計、大數據等領域。隨著Go語言的逐漸流行,越來越多的程式設計師開始學習Go語言,希望能夠掌握這門語言的特性和應用技巧。然而,對於零基礎的學習者來說,Go語言的環境配置常常成為他們學習的第一個障礙。在學習Go語言之前,我們首先需要建構一個適合的

Go語言環境設定完全指南:漫步引導您建立開發環境 Go語言環境設定完全指南:漫步引導您建立開發環境 Feb 18, 2024 pm 10:26 PM

Go語言作為一種開源的程式語言,被越來越多的開發者所青睞。它的簡潔性、高效性以及跨平台性受到了廣泛的好評。在學習和使用Go語言之前,首先需要進行環境配置,才能順利進行開發工作。本文將為大家提供一份全面的Go語言環境配置攻略,一步步教你搭建開發環境,讓你輕鬆上手Go語言開發。一、安裝Go語言首先,我們需要下載並安裝Go語言的最新版本。你可以在Go官方網站上找到

Python開發者必看:PyCharm環境配置指南 Python開發者必看:PyCharm環境配置指南 Feb 23, 2024 pm 01:57 PM

PyCharm是許多Python開發者常用的整合開發環境(IDE),它提供了豐富的功能和工具,方便開發者有效率地編寫、除錯和測試Python程式碼。在使用PyCharm進行開發之前,重要的一步是對PyCharm環境進行配置。本文將為Python開發者提供PyCharm環境配置指南,包括安裝PyCharm、配置Python解釋器、設定虛擬環境等內容,同時會附帶具

Maven環境設定教學:快速上手設定步驟 Maven環境設定教學:快速上手設定步驟 Feb 21, 2024 pm 07:57 PM

Maven環境設定教學:快速上手設定步驟Maven是一個強大的專案管理工具,它可以幫助開發人員自動建置專案、管理依賴、執行測試等。在學習和使用Java開發時,配置Maven環境是必備的技能。本文將向您介紹如何快速上手設定Maven環境,包括安裝Maven、配置環境變數、建立專案等一系列步驟,並提供具體的程式碼範例可協助您更好地理解。第一步:下載和安裝Mave

在Mac電腦上設定和安裝Golang開發環境的步驟 在Mac電腦上設定和安裝Golang開發環境的步驟 Feb 24, 2024 pm 04:30 PM

Mac電腦是許多開發者鍾愛的工作平台,而Golang作為一種高效的程式語言,也受到了越來越多人的喜愛。本文將詳細介紹如何在Mac電腦上設定和安裝Golang的開發環境,同時提供具體的程式碼範例,幫助讀者快速入門和使用Golang進行開發。步驟一:下載Golang安裝包首先,我們需要從Golang官方網站(https://golang.org/dl/)下載適用於

See all articles