此配置是我在使用過(guò)程中總結(jié)出比較實(shí)用的配置參數(shù),基于GTID的主從復(fù)制場(chǎng)景中使用:
[mysqld]
port=23306??????????????????????????????????? --mysql進(jìn)程端口
read-only=0?????????????????????????????????? --關(guān)閉只讀模式
gtid_mode=on?????????????????????????????? --開(kāi)啟GTID,全局事務(wù)ID模式
enforce_gtid_consistency=on??????? --強(qiáng)制GTID一致性领铐,配合gtid_mode,必選
auto-increment-offset=1??????????????? --自增長(zhǎng)起始值怕品,主從復(fù)制場(chǎng)景中治笨,主從的起始值需要不同
auto-increment-increment=2???????? --自增長(zhǎng)步進(jìn)值考婴,主從復(fù)制場(chǎng)景中砌们,步進(jìn)值需要一致杆麸,保證主從中自增長(zhǎng)主鍵不沖突
log-slave-updates=1???????????????????? --作為從庫(kù)使用時(shí),開(kāi)啟log-slave-updates配置浪感,能使從庫(kù)的sql線程讀取主庫(kù)的bin-log時(shí)昔头,不會(huì)將這些同步數(shù)據(jù)寫(xiě)入從庫(kù)的bin-log中
relay_log_info_repository = TABLE??????? --relay.info的存儲(chǔ)形式,此處使用table影兽,將relay.info中的信息記錄在table中相對(duì)安全揭斧,可以避免relay.info更新不及時(shí),SLAVE 重啟后導(dǎo)致的主從復(fù)制出錯(cuò)
master_info_repository = TABLE??????????? --作用同relay_log_info_repository
relay_log_recovery = on???????????????????????? --開(kāi)啟relay_log恢復(fù)功能峻堰,當(dāng)slave從庫(kù)宕機(jī)后讹开,假如relay-log損壞了,導(dǎo)致一部分中繼日志沒(méi)有處理茧妒,則自動(dòng)放棄所有未執(zhí)行的relay-log萧吠,并且重新從master上獲取日志左冬,這樣就保證了relay-log的完整性桐筏。
basedir = /var/mysql/mysql???????????????????? --base目錄
datadir = /var/mysql/mysql/data????????????? --數(shù)據(jù)目錄
innodb_data_home_dir = /var/mysql/mysql/data?????????????????? --innodb引擎的共享表空間數(shù)據(jù)文件根目錄
innodb_log_group_home_dir = /var/mysql/mysql/data??? --在事務(wù)被提交并寫(xiě)入到表空間磁盤文件上之前,事務(wù)數(shù)據(jù)存儲(chǔ)在InnoDB的redo日志文件里拇砰。這些日志位于innodb_log_group_home_dir變量定義的目錄中梅忌,通常我們把這個(gè)目錄設(shè)置與innodb_data_home_dir變量相同狰腌。為了獲得最佳性能,建議分離innodb_data_home_dir和innodb_log_group_home_dir到單獨(dú)的物理存儲(chǔ)陣列上牧氮,這樣可以保證IO資源不起沖突琼腔,利于服務(wù)器處理大量高并發(fā)連接。
innodb_buffer_pool_size=4096M??????? --該變量將數(shù)據(jù)存導(dǎo)入到內(nèi)存中踱葛,可以減少大量的IO資源消耗丹莲。當(dāng)事務(wù)提交時(shí),保存臟數(shù)據(jù)尸诽,后續(xù)在刷新到磁盤甥材。當(dāng)我們調(diào)整innodb_buffer_pool_size大小時(shí),innodb_log_buffer_size和innodb_log_file_size也應(yīng)該做出相應(yīng)的調(diào)整性含。
socket=/var/lib/mysql/mysql.sock??????? --socket文件目錄
character-set-server=utf8???????????????????? --服務(wù)器編碼集
collation-server = utf8_unicode_ci???????? --編碼
local_infile=0?????????????????????????????????????????? --禁用所有LOAD DATA LOCAL
bind-address=0.0.0.0????????????????????????????? --bind ip
init-connect='SET NAMES utf8'????????????? --連接初始化后動(dòng)態(tài)執(zhí)行語(yǔ)句
max_connections = 10000????????????????????? --最大連接數(shù)
log-bin = /var/mysql/backup/mysql-bin??????????? --bin-log日志目錄
binlog_format = row???????????????????????????????????????? --bin-log格式洲赵,包括STATEMENT,ROW商蕴,MIXED
server-id=1???????????????????????????????????????????????????? --server-id叠萍,必須是數(shù)字類型,主從需要不一致
slave-skip-errors=all????????????????????????????????????? --忽略錯(cuò)誤绪商,并不能跳過(guò)所有DDL所引起的主從錯(cuò)誤苛谷,使用格式:--slave-skip-errors=[err_code1,err_code2,...|all|ddl_exist_errors]
max_allowed_packet=32M??????????????????????????? --一次會(huì)話最大包限制
interactive_timeout=120??????????????????????????????? --針對(duì)交互式連接,通過(guò)mysql客戶端連接數(shù)據(jù)庫(kù)是交互式連接
wait_timeout=120????????????????????????????????????????? --針對(duì)非交互式連接格郁,通過(guò)jdbc連接數(shù)據(jù)庫(kù)是非交互式連接
skip-name-resolve=1???????????????????????????????????? --跳過(guò)域名解析
[mysqld_safe]
log-error=/var/hms/installer/mysql/mysqld.log
[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8