溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql5.7.19版本的主從復(fù)制問題分享

發(fā)布時間:2020-07-12 22:54:05 來源:網(wǎng)絡(luò) 閱讀:509 作者:三創(chuàng)同樂 欄目:MySQL數(shù)據(jù)庫

今天學(xué)習(xí)構(gòu)建mysql 5.7.19版本的MySQL的主從復(fù)制

碰到了一些坑,特定分享下:

  1. mysql的主從服務(wù)器是通過克隆虛擬機完成,導(dǎo)致uuids一樣,需要修改auto.cnf文件

  2. 在slave上想通過在/etc/my.cnf里添加連接master的配置,總是導(dǎo)致啟動mysqld服務(wù)失敗,看錯誤日志,說不支持的選項。原因是5.7.19里已經(jīng)淘汰了在配置文件里加這種配置的方法了。


下面是部分筆記,特分享下。

mysql> show variables like "%binlog%";

| binlog_format                           | ROW  

====

如何讓程序能同時讀取主和從服務(wù)器上的數(shù)據(jù):

1.直接在程序里寫死,那個業(yè)務(wù)訪問那臺MySQL服務(wù)器ip,定死。 ---》很傻、維護起來非常麻煩,需要開發(fā)的協(xié)助。

不同的業(yè)務(wù),不同的服務(wù)器

a ----》MYSQL(A)

B ---->MYSQL(B)

2.相同的業(yè)務(wù),不同的服務(wù)器。使用域名解析來達(dá)到讀寫分離。 ---》比較簡單,只要修改下域名對應(yīng)的ip

寫 ----》主

wdb.abc.com  --->132.1.1.5  主

讀 -----》主、從    

可以使用負(fù)載均衡域名解析

rdb.abc.com  --->132.1.1.1

rdb.abc.com  --->132.1.1.2

rdb.abc.com  --->132.1.1.3

rdb.abc.com  --->132.1.1.4  從

rdb.abc.com  --->132.1.1.5  主

3.使用中間件來實現(xiàn)讀寫分離。oneproxy---》杭州平民軟件---》王廣友

中間件里有個配置文件,會寫明讀往那些服務(wù)器,寫往那臺服務(wù)器。

開源:mycat



=====

主從復(fù)制-----》為讀寫分離做鋪墊。---》提升性能的作用。

=====

MySQL  replication  復(fù)制

   master   slave

   write  read


=====

克隆 clone

1.先關(guān)閉計算機


=====

主從復(fù)制的前提條件:

2臺MySQL服務(wù)器的數(shù)據(jù)是一樣的。

=====

將master和slave的ip地址配置好,不要一樣,同時修改主機名為mysql_master  、mysql_slave


mysql> grant replication slave  on *.* to 'backup'@'192.168.0.139' identified by '123456';

mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';

====

/etc/my.cnf


server-id=2

log-bin

master-host=192.168.0.137

master-user=backup

master-password=123456

master-port=3306

目前不可行,總是報錯

mysql 官方給的解釋:

Obsolete Replication Slave Options  廢棄的主從復(fù)制的選項

The following options are removed in MySQL 5.5. If you attempt to start mysqld with any of these

options in MySQL 5.5, the server aborts with an unknown variable error. To set the replication

parameters formerly associated with these options, you must use the CHANGE MASTER TO ...

statement (see Section 13.4.2.1, “CHANGE MASTER TO Syntax”).

The options affected are shown in this list:

? --master-host

? --master-user

? --master-password

? --master-port

? --master-connect-retry


? --master-ssl

? --master-ssl-ca

? --master-ssl-capath

? --master-ssl-cert

? --master-ssl-cipher

? --master-ssl-key


===

在從服務(wù)器的數(shù)據(jù)庫里輸入命令:

mysql> change master to master_host='192.168.0.137', master_user='backup', master_password='123456', master_port=3306;


mysql> START SLAVE;

Query OK, 0 rows affected (0.00 sec)


mysql>

             Slave_IO_Running: No   IO線程啟動不起來

            Slave_SQL_Running: Yes

出錯信息:

                Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work

  原因是MySQL的server UUID一樣

[root@mysql-slave mysql]# pwd

/var/lib/mysql      ---》存放在此目錄下

[root@mysql-slave mysql]# 

[root@mysql-slave mysql]# vim auto.cnf   修改此文件里的uuid

[auto]

server-uuid=7fce030c-9f7b-11e7-b09f-000c29e2a2e4

[root@mysql-slave mysql]# service mysqld restart

Redirecting to /bin/systemctl restart  mysqld.service

[root@mysql-slave mysql]# 

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

====

不要在slave里寫數(shù)據(jù),會導(dǎo)致SQL thread線程不工作,如果已經(jīng)寫了,建議刪除,重新啟動下slave 進程

mysql> start slave;

===

relay-log.info ---》記錄上次從主服務(wù)器的binlog日志里什么位置,下次去復(fù)制下載主的binlog日志的時候,知道從哪里開始。

master.info  --->連接主服務(wù)器使用的(主的ip和連接使用的用戶和密碼)

mysql-slave-relay-bin.000006  記錄中繼日志被重新執(zhí)行的時候的二進制日志

====

1.主從服務(wù)器之間復(fù)制數(shù)據(jù)的時候,有延遲嗎?是否有數(shù)據(jù)丟失的現(xiàn)象發(fā)生?

主從服務(wù)器存放在一個機房好,還是2個機房好?

2.如何減少延遲?如何避免數(shù)據(jù)丟失?

3.半同步復(fù)制是什么?

4.主服務(wù)器down機了,從服務(wù)器如何頂替主服務(wù)器工作?

5.主服務(wù)器又恢復(fù)了,又可以充當(dāng)什么角色?主還是從?

6.了解mycat和oneproxy中間件程序,實現(xiàn)讀寫分離

===

聯(lián)系方式:695811769@qq.com

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI