MySQL復制有多種類型:
? 異步復制:一個主庫,一個或多個從庫,數據異步同步到從庫
? 同步復制:在MySQL Cluster中特有的復制方式
? 半同步復制:在異步復制的基礎上,確保任何一個主庫上的事務在提交之前至
少有一個從庫已經收到該事務并日志記錄下來
? 延遲復制:在異步復制的基礎上,人為設定主庫和從庫的數據同步延遲時間,
即保證數據延遲至少是這個參數
**1、mysql 默認復制模式是異步復制。**
配置方法:
? 主庫需要開啟bin-log,并且指定一個唯一的server-id,重啟數據庫
[mysqld]
log-bin=mysql-bin
server-id=1
在同一個復制組下的所有實例的server_id都必須是唯一的,而且取值必須是正整數,取值范圍是1~(2 32 )?1
確保主庫的my.cnf中skip-networking參數為非開啟狀態,否則會導致主從庫不能通信而復制失敗
mysql> show variables like '%log_bin%';
+---------------------------------+---------------------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------------------+
| log_bin | ON |
| log_bin_basename | /usr/local/mysql/data/mysql-bin |
| log_bin_index | /usr/local/mysql/data/mysql-bin.index |
? 在主節點添加專用于復制的用戶:
mysql> CREATE USER 'repl'@'192.168.237.%' IDENTIFIED BY 'mysql';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.237.%';
mysql> FLUSH TABLES WITH READ LOCK; ## 主庫上所有表加鎖,停止修改
mysql > SHOW MASTER STATUS; ##獲取主庫的日志信息,file表示當前日志,position表示當前日志里的位置
mysql> UNLOCK TABLES;
? 從庫配置唯一server-id,并重啟mysql實例
從庫的bin log屬性可以打開也可以不打開
[mysqld]
server-id=2
? 從庫指定主庫的日志信息和鏈接信息
mysql> CHANGE MASTER TO
MASTER_HOST='master_host_name', ##主庫的主機名
MASTER_PORT=port_number, ##主庫的端口號
MASTER_USER='replication_user_name', ##復制的數據庫用戶名
MASTER_PASSWORD='replication_password', ##復制的用戶密碼
MASTER_LOG_FILE='recorded_log_file_name', ##主庫的日志文件名
MASTER_LOG_POS=recorded_log_position; ##主庫的日志文件位置
? 從庫啟動復制進程
mysql> START SLAVE;
? 查看主備庫復制是否正常:
? 在slave上執行show slave status\G命令
mysql> show slave status\G
當第一個slave創建好之后,如果還想創建其他的slave,則可以直接使用先前使用的備份文件,
分別執行:
a) 在slave的my.cnf上分配新的server_id
b) 從庫應用主庫的數據鏡像
a) 利用相同的change master命令將從庫指定主庫的日志信息和鏈接信息
c) Slave start
主庫上執行:
mysql> show processlist; ####查看從庫的復制進程
**2、半同步復制:**
在異步復制的基礎上進行配置:
rpl_semi_sync_master_wait_point參數用來控制半同步復制的行為:
AFTER_SYNC:默認值
AFTER_COMMIT
需要配置的系統參數包括:
rpl_semi_sync_master_enabled:在主庫配置,確保主庫的半同步復制功能開啟
rpl_semi_sync_master_timeout:配置主庫等待多少毫秒時間來保證接收備庫的確認消息,當超過這個時間時,半同步變成異步方式
rpl_semi_sync_slave_enabled:在從庫配置,確保從庫的半同步復制功能開啟
半同步復制是通過插件的方式建立,要分別在主庫和從庫安裝一個插件。相關的插件安裝文件會在plugin_dir文件夾下,并以semisync_master和semisync_slave名字打頭
前提條件:
5.5版本及以上
have_dynamic_loading參數必須是YES代表可以安裝插件并動態加載
事先建立好異步復制關系
配置:
主庫上安裝插件:
INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so';
在每個從庫上安裝插件:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
查看插件的安裝情況:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
在主庫上開啟半同步復制:
SET GLOBAL rpl_semi_sync_master_enabled = 1;
SET GLOBAL rpl_semi_sync_master_timeout = N; ##N是毫秒,默認是10000,代表10秒
在備庫上開啟半同步復制:
SET GLOBAL rpl_semi_sync_slave_enabled =1;
在備庫上重啟slave進程:
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
半同步復制監控參數:
Rpl_semi_sync_master_clients:檢查半同步的slave個數
Rpl_semi_sync_master_status:1表示主庫的半同步功能開啟并且運行正常,0表示主庫的半同步功能關閉或者半同步復制已經變成了異步復制
Rpl_semi_sync_master_no_tx:表示有多少提交沒有收到slave的確認消息
Rpl_semi_sync_master_yes_tx:表示有多少個提交收到了slave的確認消息
Rpl_semi_sync_slave_status:1表示備庫上slave功能開啟并且運行正常,0表示功能為開啟或者運行異常
通過命令mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';查看各個參數的狀
態
**3、延遲復制:**
在異步復制的基礎上進行配置。
延遲復制是指定從庫對主庫的延遲至少是指定的這個間隔時間,默認是0秒。
可以通過change master to命令來指定
CHANGE MASTER TO MASTER_DELAY = N;
在slave上執行:
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_DELAY = 60;
mysql> start slave;
查看slave主機的相關信息:
select * from mysql.slave_master_info \G
- 一、日常運維腳本
- 1.1 批量創建用戶并賦予sudo權限
- 1.2 批量主機建立互信
- 1.3create_images.sh
- 1.4monitor.sh
- 1.5ftp腳本
- 1.6格式化分區
- 1.7簡單的遠程執行腳本
- 二、常用服務使用
- 1 ceph (分布式文件系統)
- 1.1 ceph 簡介
- 1.2 準備環境
- 1.3 開始部署
- 1.4 cephfs掛載
- 1.5 RBD塊存儲
- 1.6 object 對象存儲
- 1.7 集群擴展
- 1.7.1 增加刪除MON
- 1.7.2 增加刪除OSD
- 1.7.3 刪除MDS
- 注意事項
- 遇到的問題
- 1.8ceph查找數據文件
- 1.9卸載并清理環境
- 2、mysql (數據庫)
- 2.1 搭建
- 2.2 使用教程
- 2.2.1 mysql基礎配置
- 2.2.1.1 用戶權限管理
- 2.2.1.2用戶資源限制
- 2.2.1.3 密碼管理
- 2.2.1.4用戶lock
- 2.2.2mysql語法詳解
- 2.2.1建庫、表語句
- 2.2.2.2 插入 insert
- 2.2.2.3更新 update
- 2.2.2.4刪除 delete
- 2.2.2.5查詢 select
- 2.2.6視圖 索引 view index
- 2.2.7 修改 alert
- 2.2.2.8清理 truncate drop
- 2.2.9重命名 rename
- 示例語句
- 2.2.3mysql常用函數
- 2.3.1 對比操作符統概
- 2.3.2對比操作符詳解
- 2.3.3邏輯操作符
- 2.2.4分配操作符
- 2.2.5流程控制函數
- 2.2.6字符串函數
- 2.2.7字符串對比函數
- 2.2.8數字函數
- 2.2.9日期和時間函數
- 2.2.10聚合/格式轉換函數
- 2.2.11 子查詢
- 示例語句
- 2.2.4 mysql 高級應用
- 2.2.4.1 存儲過程 函數
- 2.2.4.2流程控制
- 2.2.4.3游標
- 2.2.4.4觸發器
- 課堂練習
- 2.2.2.5 數據庫設計
- 2.2.5.1 數據類型
- 2.2.5.2存儲引擎
- 2.2.6Innodb內核
- 1、innodb事務和多版本控制
- 2、體系結構
- 3、InnoDB配置
- 4、buffer pool設置
- 5、其他配置
- innodb限制
- 2.7 字符集
- 2.8鎖機制和事務
- 2.8.1鎖機制
- 2.8.2事務
- 2.9分區
- 2.9.1 自動分區
- 2.10復制
- 2.11mysql搬移數據目錄
- 2.12組復制 GR
- 簡介
- 搭建
- 2.3日常運維
- 2.3.1定時任務
- 2.4mycat
- 2.4.1 報錯分析
- 2.4.2 修改字符集
- 2.11 mycat使用
- 2.5遇到問題
- 2.5.1 表名庫名忽略大小寫
- 3、PAAS平臺搭建
- 問題匯總
- 1、docker
- 2、日常運維
- 3.1 Kubernetes
- 3.1 kubernetes 高版本搭建
- 4、GlusterFS搭建
- 5、MooseFS搭建
- 5.1搭建
- 5.2運維
- 5.2.1 mfs日志解析
- 5.2.2清理mfs的垃圾數據
- 5.2.3元數據故障恢復
- 5.2.4 MFS優化
- 5.2.5 配置機架感知
- 5.2.6 客戶端工具集
- 6、集群切換命令
- 7、ntp服務
- 8、monggoDB
- 8.1搭建單機
- 2、搭建集群及分片
- 9、MariaDB Galera Cluster
- 9.1源碼安裝MariaDB
- 9.2galera cluster 優劣
- 9.3 rpm安裝mariadb
- 10 HAproxy1.7搭建
- 11、sysbench 搭建使用
- 0.5版本
- 12 percona-xtradb-cluster
- 13http服務相關
- 13.1 http狀態碼解析
- 14 zookeeper
- 14.1 zookeeper日志查看
- 14.2 配置解析
- 14.3 優化
- 15搭建私有pip源
- 16/var/log的日志文件解釋
- 15 ansible的搭建及使用
- 15.1 搭建
- 15.2 使用說明
- 16. 搭建本地yum源
- zookeeper
- 優化
- 四、開發語言
- 1、GO語言
- 1.1go簡介
- 1.1.1hello_world初識GO
- 1.1.2并發介紹
- 1.1.3 chan介紹
- 1.1.4多返回值
- 1.2go基礎
- 1.2.1數據類型
- 1.2.2 go基礎結構
- 1.2.3 const及變量介紹
- 1.2.3os和time介紹
- 1.2.4 字符串
- 1.2.5條件判斷
- 1.2.6 homework
- go--help
- 1.3 go基礎2
- 1.3.1 數組 array
- 1.3.2切片 slice
- 1.3.3 時間和日期
- 1.3.4指針類型
- 1.3.5函數
- 1.3.6可變參數
- 1.3.7 defer
- 1.3.8遞歸
- 1.9閉包
- 1.10 map
- 1.11 sort
- 1.12 struct 結構體
- 2.perl語言
- 2.1 安裝lib包
- 3 python
- 1.語言基礎
- 2、編程教學
- 2.1變量和序列
- 2.2 條件語句