MySQL主從複製與Atlas讀寫分離

配置主從複製

1. 增長主從配置mysql

# 主庫配置文件
server-id = 1
log-bin = /var/lib/mysql/mysql-bin
expire_logs_days = 10
skip_name_resolve = 0


# 從庫配置文件
server-id = 2                            # server id 必須惟一
log-bin=/var/lib/mysql/mysql-bin         # 開啓binlog
skip_name_resolve=0                      # 跳過域名解析
expire_logs_days = 10                    # binlog保存時間
read_only=1                              # 從庫只讀 (非root用戶 )
super_read_only=1                        # 從庫只讀 (限制超級用戶)

# 命令行設置
  set global read_only=1;
  set global super_read_only=1;git


# 重啓數據庫生效
  systemctl restart mysqldgithub

 

2. 初始化從庫數據sql

 1) 備份主庫數據, 備份時,會鎖表。
mysqldump -uroot -p1qaz@WSX3edc  -A -B -F --master-data=2  >/tmp/full.sql
-F 刷新二進制日誌
--master-data [=#]這會致使二進制日誌的位置和文件名被追加到輸出中。
若是等於1,則將其打印爲CHANGE MASTER命令; 若是等於2,那麼該命令將以註釋符號爲前綴。

2) 從庫恢復 mysql -uuser -ppwd show variables like 'log_bin'; set sql_log_bin = 0; source /tmp/full.sql

 

3. 開啓從庫複製數據庫

 1)查看備份的當前使用的文件及POS號
 grep "mysql-bin"  /tmp/full.sql

 
 2)登入數據庫,進行slave配置。
CHANGE MASTER TO
  MASTER_HOST='ip',
  MASTER_USER='user',
  MASTER_PASSWORD='pwd',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000002',
  MASTER_LOG_POS=154;

start  slave;  # 啓動從庫複製

  3) 測試主從同步
 查看slave庫的狀態,主要查看   Slave_IO_Running 與 Slave_SQL_Running 是否都爲Yes
show slave status\G

 

4. 在主庫進行操做,在從庫驗證vim

create database test;

在從庫上能夠看到該數據庫已建立
show databases;

 

主從常見問題

# 跳過錯誤後端

命令行設置負載均衡

stop slave; #<==臨時中止同步開關。
set global sql_slave_skip_counter = 1 ; #<==將同步指針向下移動一個,若是屢次不一樣步,能夠重複操做。
start slave;

在配置文件修改,設置要跳過的poside

/etc/my.cnf
slave-skip-errors = 1032,1062,1007

 

# 切換從庫爲主庫工具

show slave status\G     # 查看同步狀態
stop  slave;              # 關閉同步
set global read_only=0;
set global super_read_only=0;   # 容許寫操做    

 

 

Atlas讀寫分離

github地址:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

 

1. 安裝

# 下載安裝包
wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm

# 安裝
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm

# 查看安裝包
rpm -ql Atlas-2.2.1-1.x86_64

 

2. 配置

atlas配置文件中的密碼須要加密,可使用,軟件自帶的加密工具進行加密

# 生成密文密碼
[root@db03 bin]# /usr/local/mysql-proxy/bin/encrypt 123
3yb5jEku5h4=

# 編輯配置文件
vim  /usr/local/mysql-proxy/conf/test.cnf
[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 192.168.0.81:3306
proxy-read-only-backend-addresses = 192.168.0.83:3306
pwds = game:3yb5jEku5h4=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log=ON
proxy-address = 0.0.0.0:33060
admin-address = 0.0.0.0:2345
charset=utf8
client-ips = 127.0.0.1, 192.168.0

 

[mysql-proxy]

#帶#號的爲非必需的配置項目

#管理接口的用戶名
admin-username = user

#管理接口的密碼
admin-password = pwd

#Atlas後端鏈接的MySQL主庫的IP和端口,可設置多項,用逗號分隔
proxy-backend-addresses = 127.0.0.1:3306

#Atlas後端鏈接的MySQL從庫的IP和端口,@後面的數字表明權重,用來做負載均衡,若省略則默認爲1,可設置多項,用逗號分隔
#proxy-read-only-backend-addresses = 127.0.0.1:3305@1

#用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密,下行的user1和user2爲示例,將其替換爲你的MySQL的用戶名和加密密碼!
pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=

#設置Atlas的運行方式,設爲true時爲守護進程方式,設爲false時爲前臺方式,通常開發調試時設爲false,線上運行時設爲true,true後面不能有空格。
daemon = true

#設置Atlas的運行方式,設爲true時Atlas會啓動兩個進程,一個爲monitor,一個爲worker,monitor在worker意外退出後會自動將其重啓,設爲false時只有worker,沒有monitor,通常開發調試時設爲false,線上運行時設爲true,true後面不能有空格。
keepalive = true

#工做線程數,對Atlas的性能有很大影響,可根據狀況適當設置
event-threads = 8

#日誌級別,分爲message、warning、critical、error、debug五個級別
log-level = message

#日誌存放的路徑
log-path = /usr/local/mysql-proxy/log

#SQL日誌的開關,可設置爲OFF、ON、REALTIME,OFF表明不記錄SQL日誌,ON表明記錄SQL日誌,REALTIME表明記錄SQL日誌且實時寫入磁盤,默認爲OFF
#sql-log = OFF

#慢日誌輸出設置。當設置了該參數時,則日誌只輸出執行時間超過sql-log-slow(單位:ms)的日誌記錄。不設置該參數則輸出所有日誌。
#sql-log-slow = 10

#實例名稱,用於同一臺機器上多個Atlas實例間的區分
#instance = test

#Atlas監聽的工做接口IP和端口
proxy-address = 0.0.0.0:1234

#Atlas監聽的管理接口IP和端口
admin-address = 0.0.0.0:2345

#分表設置,此例中person爲庫名,mt爲表名,id爲分表字段,3爲子表數量,可設置多項,以逗號分隔,若不分表則不須要設置該項
#tables = person.mt.id.3

#默認字符集,設置該項後客戶端再也不須要執行SET NAMES語句
#charset = utf8

#容許鏈接Atlas的客戶端的IP,能夠是精確IP,也能夠是IP段,以逗號分隔,若不設置該項則容許全部IP鏈接,不然只容許列表中的IP鏈接
#client-ips = 127.0.0.1, 192.168.1

#Atlas前面掛接的LVS的物理網卡的IP(注意不是虛IP),如有LVS且設置了client-ips則此項必須設置,不然能夠不設置
#lvs-ips = 192.168.1.1
配置文件詳細說明

 

3. 啓動

/usr/local/mysql-proxy/bin/mysql-proxyd test start   #啓動
/usr/local/mysql-proxy/bin/mysql-proxyd test stop    #中止
/usr/local/mysql-proxy/bin/mysql-proxyd test restart #重啓

netstat -lntup|grep mysql-proxy # 查看端口

 

4. 管理

# 登入管理接口
mysql -uuser -ppwd -h127.0.0.1 -P2345 

# 查看幫助信息
mysql> SELECT * FROM help;

#  查看後端代理數據庫
mysql> SELECT * FROM backends;

# 平滑摘除mysql
mysql> REMOVE BACKEND 2;

# 添加mysql節點
mysql> add slave 10.0.0.52:3306;

# 保存到配置文件
mysql> SAVE CONFIG;
相關文章
相關標籤/搜索