工作原理圖:
主從複製的原理:
分為同步複製和非同步複製,實際複製架構中大部分為非同步複製。 複製的基本流程如下:
1).Slave上面的IO程序連接上Master,並請求從指定日誌檔案的指定位置(或從最開始的日誌)之後的日誌內容;
2).Master接收到來自Slave的IO進程的請求後,透過負責複製的IO進程根據請求訊息讀取製定日誌指定位置之後的日誌訊息,返回給Slave 的IO進程。傳回訊息中除了日誌所包含的資訊之外,還包括本次傳回的訊息已經到Master端的bin-log檔案的名稱以及bin-log的位置;
3).Slave的IO行程接收到資訊後,將接收到的日誌內容依序加入Slave端的relay-log檔案的最末端,並將讀取到的Master端的bin-log的檔案名稱和位置記錄到master-info檔案中,以便在下次讀取取的時候能夠清楚的告訴Master「我需要從某個bin-log的哪個位置開始往後的日誌內容,請發給我」;
4).Slave的Sql程序偵測到relay- log中新增加了內容後,會馬上解析relay-log的內容成為在Master端真實執行時候的那些可執行的內容,並在自身執行。
環境描述
作業系統:CentOS6.3_x64
主伺服器master:192.168. 0.202
從伺服器slave:192.168.0.203
#1、主從安裝mysql,版本一致
我們裝的是mysql-5.5.30.tar.gz 這裡省略…2、修改master,slave伺服器
master服务器配置: vi /usr/local/mysql/etc/my.cnf [mysqld] server-id=202 #设置服务器唯一的id,默认是1,我们设置ip最后一段,slave设置203 log-bin=mysql-bin # 启用二进制日志 binlog-ignore-db = mysql,information_schema #忽略写入binlog的库 slave服务器配置: vi /usr/local/mysql/etc/my.cnf [mysqld] server-id=203 replicate-do-db = abc #只同步abc库 slave-skip-errors = all #忽略因复制出现的所有错误
3、重新啟動主從伺服器mysql
/etc/init.d/mysqld restart
4、在主伺服器上建立帳戶並授權slave
mysql> mysql -u root -p123.com mysql> GRANT REPLICATION SLAVE ON *.* to ‘sync’@‘192.168.1.2’ identified by ‘1234.com’; #replication:复制
5、查看主資料庫狀態
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 263 | | | +------------------+----------+--------------+------------------+
6、設定從資料庫
mysql> change master to -> master_host='192.168.0.202', -> master_user='sync', -> master_password='1234.com', -> master_log_file='mysql-bin.000002', -> master_log_pos=263; #Log和pos是master上随机获取的。这段也可以写到my.cnf里面。
7、啟動slave同步進程並檢視狀態
mysql> start slave;
8、驗證主從同步
在主mysql建立資料庫abc,再從mysql查看已經同步成功!mysql> create database abc; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | abc | | mysql | | performance_schema | | test | +--------------------+在slave啟動報錯:“Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'”解決:報錯的原因主要是slave設定master的二進位檔案名稱或pos值不對應! 先flush logs;清空日誌,在查看下主資料庫的狀態show master status;看下日誌檔案名字和position值;再在slave中,執行:CHANGE MASTER TO MASTER_LOG_FILE ='二進位日誌名',MASTER_LOG_POS=值;最後啟動同步程序:start slave;以上就是MySQL 主從複製的原理和配置的內容,更多相關內容請關注PHP中文網(www.php.cn)!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

在mysql中,可利用“ALTER TABLE 表名 DROP INDEX unique key名”语句来删除unique key;ALTER TABLE语句用于对数据进行添加、删除或修改操作,DROP INDEX语句用于表示删除约束操作。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能