真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql從庫怎么做 mysql搭建從庫

mysql主從庫怎樣做分發(fā)

數(shù)據(jù)庫內(nèi)均無數(shù)據(jù),關(guān)閉主從庫的iptables(chkconfig iptables off)。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比海棠網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式海棠網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋海棠地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

1、主庫配置

修改主庫MySQL配置文件/ect/my.cnf:

[mysqld]

log-bin=mysql-bin

server-id=1

#skip-networking

#bind-address

server-id用來標(biāo)識(shí)MySQL數(shù)據(jù)庫,log-bin開啟二進(jìn)制日志,注釋掉skip-networking和bind-address。 重啟主庫MySQL。

2、賬號(hào)配置

在主庫服務(wù)器上,新建一個(gè)用于同步的賬號(hào)。

mysql create user 'user'@'%.domain.com' identified by 'password';

mysql grant repliction slave on *.* to 'user'@'%.domain.com';

新建的用戶user@%.domain.com,賦予slave權(quán)限。

3、主庫狀態(tài)

mysql show master status;

+------------------+-----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+-----------+--------------+------------------+

| mysql-bin.000009 | 480 | | |

+------------------+-----------+--------------+------------------+

1 row in set (0.00 sec)

記錄下File和Position的值,之后暫時(shí)不要操作主庫,防止主庫狀態(tài)發(fā)生變化。

4、從庫配置

修改主庫MySQL配置文件/ect/my.cnf:

[mysqld]

log-bin=mysql-bin

server-id=2

注意主從庫的server-id不要相同。

將主庫信息導(dǎo)入到從庫中:

mysql CHANGE MASTER TO

- MASTER_HOST='192.168.3.11',

- MASTER_USER='usere',

- MASTER_PASSWORD='password',

- MASTER_LOG_FILE='mysql-bin.000009',

- MASTER_LOG_POS=480;

啟動(dòng)從庫slave同步:

mysql start slvae;

5、從庫狀態(tài)

mysql show slave status;

查看 Slave_IO_Running | Slave_SQL_Running,如果出現(xiàn)的結(jié)果是Yes | Yes,說明mysql主從配置成功完成了。

6、驗(yàn)證同步

在主庫新建數(shù)據(jù)庫,導(dǎo)入sql腳本后,查看從庫也做了相應(yīng)的改變,說明mysql主從同步成功。

centos 怎么搭建mysql主從庫

在配置Mysql數(shù)據(jù)庫主從復(fù)制集群的時(shí)候要保證:

1.主從服務(wù)器操作系統(tǒng)版本和位數(shù)一致。

2.Mysql版本一致。

為了保證穩(wěn)定性,最好服務(wù)器操作系統(tǒng)和Mysql數(shù)據(jù)庫環(huán)境一致。

CentOS服務(wù)器上Mysql的安裝方法可以參見博客:

服務(wù)器配置:

Master:192.168.1.18

Slave:192.168.1.16

Master(192.168.1.18)服務(wù)器:

1.編輯/etc/my.cnf

[root@jhq0229 ~]# vim /etc/my.cnf

2.配置

[plain] view plain copy print?

[mysqld]

datadir=/data/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

#主從復(fù)制配置

innodb_flush_log_at_trx_commit=1

sync_binlog=1

#需要備份的數(shù)據(jù)庫

binlog-do-db=orders

#不需要備份的數(shù)據(jù)庫

binlog-ignore-db=mysql

#啟動(dòng)二進(jìn)制文件

log-bin=mysql-bin

#服務(wù)器ID

server-id=1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

若沒有配置binlog-do-db和binlog_ignore_db,表示備份全部數(shù)據(jù)庫。

3.重啟Mysqld服務(wù)

[root@jhq0229 ~]# service mysqld restart

4.為從Mysql創(chuàng)建用戶

登錄

[root@jhq0229 ~]# mysql -uroot -p

Enter password:

創(chuàng)建用戶

mysql create user 'mastj'@'192.168.1.16' identified by '123456';

配置主從復(fù)制權(quán)限

mysql grant replication slave on *.* to 'mastj'@'192.168.1.16' identified by '123456';

若orders數(shù)據(jù)庫中已經(jīng)有數(shù)據(jù),還需要:

鎖定數(shù)據(jù)庫

mysql flush tables with read lock;

將數(shù)據(jù)導(dǎo)入到從數(shù)據(jù)庫,方法有多種,我是用Navicat復(fù)制的,復(fù)制完成后:

查看master狀態(tài)并解鎖:

[html] view plain copy print?

mysql show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000003 | 2005 | orders | mysql | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql unlock tables;

Slave(192.168.1.16)服務(wù)器:

1.配置服務(wù)ID

[root@jhq0113 ~]# vim /etc/my.cnf

在[mysqld]下面加入

server-id=2

重啟Mysql服務(wù)

[root@jhq0113 ~]# service mysqld restart

2.配置復(fù)制

登錄mysql

[root@jhq0113 ~]# mysql -uroot -p

執(zhí)行

mysql change master to master_host='192.168.1.18',

master_user='mastj',

master_password='123456',

master_port=3306,

master_log_file='mysql-bin.000003',

master_log_pos=2005,

master_connect_retry=10;

參數(shù)詳解:

master_host:主服務(wù)器的IP。

master_user:配置主服務(wù)器時(shí)建立的用戶名

master_password:用戶密碼

master_port:主服務(wù)器mysql端口,如果未曾修改,默認(rèn)即可。

master_log_file:日志文件名稱,填寫查看master狀態(tài)時(shí)顯示的File

master_log_pos:日志位置,填寫查看master狀態(tài)時(shí)顯示的Position

master_connect_retry:重連次數(shù)

啟動(dòng)進(jìn)程

mysql start slave;

檢查主從復(fù)制狀態(tài)

[plain] view plain copy print?

mysql show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.18

Master_User: mastj

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 2369

Relay_Log_File: jhq0113-relay-bin.000002

Relay_Log_Pos: 647

Relay_Master_Log_File: mysql-bin.000003

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

若Slave_IO_Running和Slave_SQL_Running均為Yes,則表示連接正常。

此時(shí)就可以測(cè)試主從復(fù)制了。

MySQL 主從,5 分鐘帶你掌握

MySQL 主從一直是面試??停锩娴闹R(shí)點(diǎn)雖然基礎(chǔ),但是能回答全的同學(xué)不多。

比如樓哥之前面試小米,就被問到過主從復(fù)制的原理,以及主從延遲的解決方案,因?yàn)榛卮鸬姆浅2诲e(cuò),給面試官留下非常好的印象。你之前面試,有遇到過哪些 MySQL 主從的問題呢?

所謂 MySQL 主從,就是建立兩個(gè)完全一樣的數(shù)據(jù)庫,一個(gè)是主庫,一個(gè)是從庫, 主庫對(duì)外提供讀寫的操作,從庫對(duì)外提供讀的操作 ,下面是一主一從模式:

對(duì)于數(shù)據(jù)庫單機(jī)部署,在 4 核 8G 的機(jī)器上運(yùn)行 MySQL 5.7 時(shí),大概可以支撐 500 的 TPS 和 10000 的 QPS, 當(dāng)遇到一些活動(dòng)時(shí),查詢流量驟然,就需要進(jìn)行主從分離。

大部分系統(tǒng)的訪問模型是讀多寫少,讀寫請(qǐng)求量的差距可能達(dá)到幾個(gè)數(shù)量級(jí),所以我們可以通過一主多從的方式, 主庫只負(fù)責(zé)寫入和部分核心邏輯的查詢,多個(gè)從庫只負(fù)責(zé)查詢,提升查詢性能,降低主庫壓力。

MySQL 主從還能做到服務(wù)高可用,當(dāng)主庫宕機(jī)時(shí),從庫可以切成主庫,保證服務(wù)的高可用,然后主庫也可以做數(shù)據(jù)的容災(zāi)備份。

整體場(chǎng)景總結(jié)如下:

MySQL 的主從復(fù)制是依賴于 binlog 的,也就是記錄 MySQL 上的所有變化并以二進(jìn)制形式保存在磁盤上二進(jìn)制日志文件。

主從復(fù)制就是將 binlog 中的數(shù)據(jù)從主庫傳輸?shù)綇膸焐?,一般這個(gè)過程是異步的,即主庫上的操作不會(huì)等待 binlog 同步的完成。

詳細(xì)流程如下:

當(dāng)主庫和從庫數(shù)據(jù)同步時(shí),突然中斷怎么辦?因?yàn)橹鲙炫c從庫之間維持了一個(gè)長鏈接,主庫內(nèi)部有一個(gè)線程,專門服務(wù)于從庫的這個(gè)長鏈接的。

對(duì)于下面的情況,假如主庫執(zhí)行如下 SQL,其中 a 和 create_time 都是索引:

我們知道,數(shù)據(jù)選擇了 a 索引和選擇 create_time 索引,最后 limit 1 出來的數(shù)據(jù)一般是不一樣的。

所以就會(huì)存在這種情況:在 binlog = statement 格式時(shí),主庫在執(zhí)行這條 SQL 時(shí),使用的是索引 a,而從庫在執(zhí)行這條 SQL 時(shí),使用了索引 create_time,最后主從數(shù)據(jù)不一致了。

那么我們改如何解決呢?

可以把 binlog 格式修改為 row,row 格式的 binlog 日志記錄的不是 SQL 原文,而是兩個(gè) event:Table_map 和 Delete_rows。

Table_map event 說明要操作的表,Delete_rows event用于定義要?jiǎng)h除的行為,記錄刪除的具體行數(shù)。 row 格式的 binlog 記錄的就是要?jiǎng)h除的主鍵 ID 信息,因此不會(huì)出現(xiàn)主從不一致的問題。

但是如果 SQL 刪除 10 萬行數(shù)據(jù),使用 row 格式就會(huì)很占空間的,10 萬條數(shù)據(jù)都在 binlog 里面,寫 binlog 的時(shí)候也很耗 IO。但是 statement 格式的 binlog 可能會(huì)導(dǎo)致數(shù)據(jù)不一致。

設(shè)計(jì) MySQL 的大叔想了一個(gè)折中的方案,mixed 格式的 binlog,其實(shí)就是 row 和 statement 格式混合使用, 當(dāng) MySQL 判斷可能數(shù)據(jù)不一致時(shí),就用 row 格式,否則使用就用 statement 格式。

有時(shí)候我們遇到從數(shù)據(jù)庫中獲取不到信息的詭異問題時(shí),會(huì)糾結(jié)于代碼中是否有一些邏輯會(huì)把之前寫入的內(nèi)容刪除,但是你又會(huì)發(fā)現(xiàn),過了一段時(shí)間再去查詢時(shí)又可以讀到數(shù)據(jù)了,這基本上就是主從延遲在作怪。

主從延遲,其實(shí)就是“從庫回放” 完成的時(shí)間,與 “主庫寫 binlog” 完成時(shí)間的差值, 會(huì)導(dǎo)致從庫查詢的數(shù)據(jù),和主庫的不一致 。

談到 MySQL 數(shù)據(jù)庫主從同步延遲原理,得從 MySQL 的主從復(fù)制原理說起:

總結(jié)一下主從延遲的主要原因 :主從延遲主要是出現(xiàn)在 “relay log 回放” 這一步,當(dāng)主庫的 TPS 并發(fā)較高,產(chǎn)生的 DDL 數(shù)量超過從庫一個(gè) SQL 線程所能承受的范圍,那么延時(shí)就產(chǎn)生了,當(dāng)然還有就是可能與從庫的大型 query 語句產(chǎn)生了鎖等待。

我們一般會(huì)把從庫落后的時(shí)間作為一個(gè)重點(diǎn)的數(shù)據(jù)庫指標(biāo)做監(jiān)控和報(bào)警,正常的時(shí)間是在毫秒級(jí)別,一旦落后的時(shí)間達(dá)到了秒級(jí)別就需要告警了。

解決該問題的方法,除了縮短主從延遲的時(shí)間,還有一些其它的方法,基本原理都是盡量不查詢從庫。

具體解決方案如下:

在實(shí)際應(yīng)用場(chǎng)景中,對(duì)于一些非常核心的場(chǎng)景,比如庫存,支付訂單等,需要直接查詢從庫,其它非核心場(chǎng)景,就不要去查主庫了。

兩臺(tái)機(jī)器 A 和 B,A 為主庫,負(fù)責(zé)讀寫,B 為從庫,負(fù)責(zé)讀數(shù)據(jù)。

如果 A 庫發(fā)生故障,B 庫成為主庫負(fù)責(zé)讀寫,修復(fù)故障后,A 成為從庫,主庫 B 同步數(shù)據(jù)到從庫 A。

一臺(tái)主庫多臺(tái)從庫,A 為主庫,負(fù)責(zé)讀寫,B、C、D為從庫,負(fù)責(zé)讀數(shù)據(jù)。

如果 A 庫發(fā)生故障,B 庫成為主庫負(fù)責(zé)讀寫,C、D負(fù)責(zé)讀,修復(fù)故障后,A 也成為從庫,主庫 B 同步數(shù)據(jù)到從庫 A。

MySql服務(wù)器怎么架設(shè)主從數(shù)據(jù)庫服務(wù)器呢?

大致步驟如下:主MySQL服務(wù)器:192.168.3.1備MySQL服務(wù)器:192.168.3.2配置文件路徑:/etc/my.cnfMySQL服務(wù)狀態(tài):停止-------------------------主服務(wù)器配置-------------------編輯配置文件:vi

/etc/my.cnf找到[mysqld]在它下面添加內(nèi)容:server-id=1log-bin=backuplogbinlog-do-db=test#如果有多個(gè)數(shù)據(jù)庫需要同步,添加多行即可#binlog-do-db=test2保存my.cnf配置文件。啟動(dòng)mysql:service

mysqld

start用root登錄mysql,為同步數(shù)據(jù)創(chuàng)建新帳號(hào):grant

file,select,replication

slave

on

*.*

to

'test'@'%'

identified

by

'123456';------------------------備服務(wù)器配置-------------------------編輯配置文件:vi

/etc/my.cnf在[mysqld]下加入:server-id=2master-host=192.168.3.1master-user=testmaster-password=123456master-port=3306#replicate-do-db=test

#此配置項(xiàng)為設(shè)置僅同步的數(shù)據(jù)庫名,其它數(shù)據(jù)庫忽略(建議不設(shè)置此選項(xiàng))保存并啟動(dòng)mysql即可。如果需要查看同步狀態(tài),可分別在主從服務(wù)器上用如下命令查看:主服務(wù)器:show

master

status;從服務(wù)器:show

slave

status\G------------------值得說明的兩個(gè)文件-----------------備份服務(wù)器上的/var/lib/mysql/目錄下有兩個(gè):master.info和relay-log.info它們記錄了主服務(wù)器的配置信息和同步信息,如果出現(xiàn)備份服務(wù)器不能同步數(shù)據(jù)的問題,可嘗試將這兩個(gè)文件刪除,讓備服務(wù)器重新同步。備注:進(jìn)行操作之前先備份下數(shù)據(jù)比較保險(xiǎn)一點(diǎn)。


名稱欄目:mysql從庫怎么做 mysql搭建從庫
文章源于:http://weahome.cn/article/dogdess.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部