mysql5.6.14主从复制(也称mysql AB复制)环境配置方法
一、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='192.168.1.102', -> master_user='kongzhong', -> master_password='kongzhong', -> master_port=3306, -> master_log_file='mysql3306-bin.000001', -> master_log_pos=414; #/* 下面是一部分注解: #/* 指定主DB server的IP地址 master_host='192.168.1.102' #/* 指定用于同步的用户[这个就是我们在主DB server授权的用户] master_user='kongzhong' #/* 指定用于同步的用户的密码 master_password='kongzhong' #/* 指定主DB server的端口[下面一个例子,可以重点看这个] master_port=3306 #/* 指定从DB server 从哪个日志文件开始读[在主DB server上使用show master status查看到日志] master_log_file='mysql3306-bin.000001' #/* 指定 从哪个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)!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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