日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

amoeba mysql_Mysql 基于 Amoeba 的 读写分离

發(fā)布時(shí)間:2023/12/18 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 amoeba mysql_Mysql 基于 Amoeba 的 读写分离 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先說明一下amoeba 跟 MySQL proxy在讀寫分離的使用上面的區(qū)別:

在MySQL proxy 6.0版本 上面如果想要讀寫分離并且 讀集群、寫集群 機(jī)器比較多情況下,用mysql proxy

需要相當(dāng)大的工作量,目前mysql proxy沒有現(xiàn)成的 lua腳本。mysql proxy根本沒有配置文件,

lua腳本就是它的全部,當(dāng)然lua是相當(dāng)方便的。那么同樣這種東西需要編寫大量的腳本才能完成一

個(gè)復(fù)雜的配置。而Amoeba只需要進(jìn)行相關(guān)的配置就可以滿足需求。

假設(shè)有這樣的使用場(chǎng)景,有三個(gè)數(shù)據(jù)庫節(jié)點(diǎn)分別命名為Master、Slave1、Slave2如下:

Amoeba: Amoeba <192.168.14.129>

Master: Master <192.168.14.131> (可讀寫)

Slaves:Slave1 <192.168.14.132>、Slave2<192.168.14.133> (2個(gè)平等的數(shù)據(jù)庫。只讀/負(fù)載均衡)

在 主從數(shù)據(jù)庫 的復(fù)制的部分, 任然需要使用數(shù)據(jù)庫自己的復(fù)制機(jī)制。 Amoeba 不提供復(fù)制功能。

1. 起動(dòng)數(shù)據(jù)庫的主從復(fù)制功能。

a. 修改配置文件

master.cnf

server-id = 1 #主數(shù)據(jù)庫標(biāo)志

# 增加 日志文件, 用于驗(yàn)證讀寫分離

log = /home/mysql/mysql/log/mysql.log

slave1.cnf

server-id = 2

# 增加 日志文件, 用于驗(yàn)證讀寫分離

log = /home/mysql/mysql/log/mysql.log

slave2.cnf

server-id = 3

# 增加 日志文件, 用于驗(yàn)證讀寫分離

log = /home/mysql/mysql/log/mysql.log

b. Master 中 創(chuàng)建兩個(gè) 只讀權(quán)限 的用戶。 用戶名均為:repl_user?? 密碼均為:copy? 分別開放給 slave1, slave2

mysql> grant replication slave on *.* to repl_user@192.168.14.132 identified by 'copy';

mysql> grant replication slave on *.* to repl_user@192.168.14.133 identified by 'copy';

c. 查看 Master 信息

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000017 | 2009 | | |

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

1 row in set (0.00 sec)

d. Slave1 ,Slave2 中 啟動(dòng) Master - Slave 復(fù)制功能。

分別執(zhí)行以下命令

mysql> slave stop;

Query OK, 0 rows affected (0.02 sec)

mysql> change master to

-> master_host='192.168.14.131',

-> master_user='repl_user',

-> master_password='copy',

-> master_log_file='mysql-bin.000017',

-> master_log_pos=2009;

Query OK, 0 rows affected (0.03 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

2. Amoeba 讀寫分離的配置

a. Master , Slave1 ,Slave2 中開放權(quán)限給 Amoeba 訪問。

在 Master , Slave1 , Slave2 中分別執(zhí)行

mysql> grant all on test.* to test_user@192.168.14.129 indentified by '1234';

Amoeba 訪問三個(gè)數(shù)據(jù)庫的賬號(hào)密碼相同。

b. 修改 Amoeba 的配置文件

dbServer.xml

${defaultManager}

64

128

3306

test

test_user

1234

500

500

10

600000

600000

true

true

192.168.14.131

192.168.14.132

192.168.14.133

1

slave1,slave2

amoeba.xml

8066

${clientConnectioneManager}

128

64

root

root

${amoeba.home}/conf/access_list.conf

127.0.0.1

true

${clientConnectioneManager}

20

30

30

500

60

com.meidusa.amoeba.net.ConnectionManager

com.meidusa.amoeba.net.AuthingableConnectionManager

${amoeba.home}/conf/dbServers.xml

${amoeba.home}/conf/rule.xml

${amoeba.home}/conf/ruleFunctionMap.xml

${amoeba.home}/conf/functionMap.xml

1500

master

master

slaves

true

rule.xml

不需要 數(shù)據(jù)庫分片時(shí),不用配置。 但是不能沒有 tableRule 元素, 否則報(bào)錯(cuò)。 隨便寫個(gè)空規(guī)則就行了。

3. 測(cè)試讀寫分離

a. 在 Master , Slave1 , Slave2? 中分別查看 日志文件: mysql.log

tail -f ./log/mysql.log

b. 啟動(dòng) Amoeba, 使用 Mysql GUI Tools 連接 Amoeba

執(zhí)行以上幾個(gè)命令。 查看日志內(nèi)容。

Master? mysql.log

[mysql@prx1 mysql]$ tail -f log/mysql.log

370 Query SET SESSION sql_mode=''

370 Query SET NAMES utf8

370 Query SHOW FULL TABLES

370 Query SHOW COLUMNS FROM `t_message`

370 Query SHOW COLUMNS FROM `t_user`

370 Query SHOW PROCEDURE STATUS

370 Query SHOW FUNCTION STATUS

110813 15:21:11 370 Query SHOW VARIABLES LIKE 'character_set_server'

370 Query SHOW FULL COLUMNS FROM `test`.`t_message`

110813 15:21:12 370 Query SHOW CREATE TABLE `test`.`t_message`

110813 15:22:40 374 Connect test_user@192.168.14.129 on test

375 Connect test_user@192.168.14.129 on test

376 Connect test_user@192.168.14.129 on test

110813 15:23:40 370 Query insert into t_message values(1, 'c1')

110813 15:24:07 377 Connect test_user@192.168.14.129 on test

378 Connect test_user@192.168.14.129 on test

379 Connect test_user@192.168.14.129 on test

110813 15:24:15 370 Query insert into t_user values(8, 'n8', 'p8')

110813 15:24:24 370 Query SHOW FULL COLUMNS FROM `test`.`t_user`

370 Query SHOW CREATE TABLE `test`.`t_user`

110813 15:24:35 370 Query SHOW FULL COLUMNS FROM `test`.`t_message`

370 Query SHOW CREATE TABLE `test`.`t_message`

Slave1? mysql.log

[mysql@prx2 mysql]$ tail -f log/mysql.log

317 Connect test_user@192.168.14.129 on test

318 Connect test_user@192.168.14.129 on test

110813 15:35:30 315 Query SELECT @@sql_mode

110813 15:35:32 315 Query SELECT @@sql_mode

110813 15:35:44 315 Query SELECT @@SQL_MODE

110813 15:35:46 315 Query SELECT @@SQL_MODE

110813 15:37:18 319 Connect test_user@192.168.14.129 on test

320 Connect test_user@192.168.14.129 on test

110813 15:37:19 321 Connect test_user@192.168.14.129 on test

110813 15:37:26 246 Quit

110813 15:38:21 315 Query SELECT @@SQL_MODE

110813 15:38:22 42 Query BEGIN

42 Query insert into t_message values(1, 'c1')

42 Query COMMIT /* implicit, from Xid_log_event */

110813 15:38:50 322 Connect test_user@192.168.14.129 on test

323 Connect test_user@192.168.14.129 on test

324 Connect test_user@192.168.14.129 on test

110813 15:38:58 42 Query BEGIN

42 Query insert into t_user values(8, 'n8', 'p8')

42 Query COMMIT /* implicit, from Xid_log_event */

110813 15:39:08 315 Query SELECT @@SQL_MODE

110813 15:39:19 315 Query SELECT @@SQL_MODE

110813 15:44:08 325 Connect test_user@192.168.14.129 on test

326 Connect test_user@192.168.14.129 on test

327 Connect test_user@192.168.14.129 on test

Slave2? mysql.log

[mysql@prx3 mysql]$ tail -f log/mysql.log

110813 15:35:08 305 Connect test_user@192.168.14.129 on test

306 Connect test_user@192.168.14.129 on test

307 Connect test_user@192.168.14.129 on test

110813 15:35:31 304 Query SELECT @@sql_mode

304 Query SELECT @@sql_mode

110813 15:35:44 304 Query SELECT @@SQL_MODE

110813 15:35:46 304 Query SELECT * FROM t_message t

110813 15:37:18 308 Connect test_user@192.168.14.129 on test

309 Connect test_user@192.168.14.129 on test

310 Connect test_user@192.168.14.129 on test

110813 15:38:21 8 Query BEGIN

8 Query insert into t_message values(1, 'c1')

8 Query COMMIT /* implicit, from Xid_log_event */

110813 15:38:50 311 Connect test_user@192.168.14.129 on test

312 Connect test_user@192.168.14.129 on test

313 Connect test_user@192.168.14.129 on test

110813 15:38:58 304 Query SELECT @@SQL_MODE

8 Query BEGIN

8 Query insert into t_user values(8, 'n8', 'p8')

8 Query COMMIT /* implicit, from Xid_log_event */

110813 15:39:08 304 Query select * from t_user

110813 15:39:19 304 Query select * from t_message

110813 15:44:08 314 Connect test_user@192.168.14.129 on test

315 Connect test_user@192.168.14.129 on test

316 Connect test_user@192.168.14.129 on test

從日志中可以看出。

在 Master? mysql.log 中,只執(zhí)行了 insert into 命令。

在 Slave1 中,只是復(fù)制了 insert into 命令, 是主從復(fù)制的結(jié)果

在 Slave2 中, 復(fù)制了 insert into 命令,同時(shí)還執(zhí)行了 select 命令。

說明,主從分離已經(jīng)成功。

總結(jié)

以上是生活随笔為你收集整理的amoeba mysql_Mysql 基于 Amoeba 的 读写分离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。