国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql數據庫之主從分離實例代碼

2024-07-24 13:12:49
字體:
來源:轉載
供稿:網友

介紹

MySQL數據庫設置讀寫分離,可以使對數據庫的寫操作和讀操作在不同服務器上執行,提高并發量和相應速度。

現在的網站一般大點的,都采用有數據庫主從分離、讀寫分離,即起到備份作用也可以減輕數據庫的讀寫的壓力,一直聽說過這些,但是自己從沒有自己動手親手實踐過,今天有時間實踐一下,記錄下過程。

實驗環境

我準備了兩臺服務器,一個是本機電腦,一個是遠程vps,分別在兩臺機子上裝的有數據庫。
MySQL安裝我就不介紹了,這里需要注意的是:MySQL安裝的版本最好一致,如果不一致,低版本向高版本讀的時候可能有問題,最好保持一致。

主庫master

45.78.57.4  centos 7 Linux系統 ,  mysql版本  5.1.73

從庫slave

本機127.0.0.1  macOs系統,  mysql版本  5.1.73

配置

創建用戶

在主庫創建一個用戶,用于從庫讀取主庫的執行日志。

需要在mysql命令行里執行,需要先登錄命令行

 

復制代碼 代碼如下:

GRANT REPLICATION SLAVE ON *.* TO 'test'@'45.78.57.4' IDENTIFIED BY 'test';

 

修改my.cnf

linux系統在 /etc/my.cnf ,mac系統在安裝的MySQL的目錄,windows也一樣。

在my.cnf文件里增加一下代碼

server-id = 1 //數據庫ID號log-bin=master-bin //啟用二進制日志log-bin-index=master-bin.index //二進制日志名稱

這里注意不要放在文件的末尾,要放在前面,即[mysqld]后,這里放上我的my.cnf內容

[mysqld]server-id=1log-bin=master-binlog-bin-index=master-bin.indexdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlsymbolic-links=0max_allowed_packet=100M[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

查看狀態

登陸mysql命令行后,輸入show master status,如果出現下面信息代表主庫配置完成

mysql> show master status;+-------------------+----------+--------------+------------------+| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-bin.000001 |  672675 |       |         |+-------------------+----------+--------------+------------------+1 row in set (0.00 sec)

記錄下File和Position兩個內容,從庫配置的時候會用到這個。

從庫配置

在本機電腦(從庫)上找到my.cnf文件,然后添加以下內容,這個配置和主庫的配置意思是一樣的

server-id=2relay-log=slave-relay-binrelay-log-index=slave-relay-bin.index

注意確定和主庫的位置一樣,我就因為位置放置在末尾導致一直關聯不上。

關聯主從庫

最后一步很重要,登錄從庫的MySQL命令行,執行以下代碼,主要是關聯主庫的一些信息。

change master to master_host='45.78.57.4',  #Master 服務器Ipmaster_port=3306,master_user='test',master_password='test', master_log_file='master-bin.000001', #Master日志文件名master_log_pos=672675; #Master日志同步開始位置

注意是否執行成功,如果執行失敗就好好檢查下代碼,看看哪里寫錯了。

如果執行正常,就啟動從庫slave,并查看下連接狀態。

//需要再mysql命令行執行 start slave; show slave status/G; //查看slave連接狀態

狀態信息

        Slave_IO_State: Waiting for master to send event         Master_Host: 45.78.57.4         Master_User: test         Master_Port: 3306        Connect_Retry: 60       Master_Log_File: master-bin.000001     Read_Master_Log_Pos: 672913        Relay_Log_File: slave-relay-bin.000044        Relay_Log_Pos: 504    Relay_Master_Log_File: master-bin.000001       Slave_IO_Running: Yes      Slave_SQL_Running: Yes

注意!

這兩個狀態必須為Yes才算成功,如果不是,則檢查上面步驟那一步配置錯誤。

Slave_IO_Running: YesSlave_SQL_Running: Yes

測試

現在你在主庫上添加一條數據,看看從庫上是否有一個相同的數據,如果有則配置正常,功能使用正常。

主從分離的原理主要是:開啟主庫的執行日志功能,然后從庫讀取主庫的日志信息,然后將主庫執行過的SQL語句在從庫上面執行一遍就做到主從分離,主從數據保持一直,備份數據的功能。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东方市| 和田县| 中西区| 孟连| 通化县| 玉门市| 寿宁县| 台州市| 湖州市| 同江市| 宿迁市| 乌拉特中旗| 湟源县| 上犹县| 怀安县| 晋江市| 麻栗坡县| 金山区| 瑞金市| 若羌县| 木兰县| 南阳市| 镇雄县| 左贡县| 朝阳区| 法库县| 绥滨县| 平谷区| 大兴区| 庆城县| 民县| 张家界市| 获嘉县| 宣武区| 长葛市| 延寿县| 原阳县| 七台河市| 正镶白旗| 龙门县| 涪陵区|