版本示例
- MySQL版本:5.7.25
配置文件參考
Linux上使用yum安裝完成的MySQL數(shù)據(jù)庫配置文件一般在/etc/my.cnf下,配置文件如下:
[mysqld]
sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links = 0
# 1-表名大小寫不敏感
lower_case_table_names = 1
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
character_set_server=utf8mb4
# 設(shè)置MySQL時(shí)區(qū)(數(shù)據(jù)表默認(rèn)時(shí)區(qū),默認(rèn)時(shí)區(qū)為東八區(qū))
default-time-zone = '+8:00'
#數(shù)據(jù)庫唯一ID,主從的標(biāo)識(shí)號(hào)絕對(duì)不能重復(fù)。
server-id = 1
#開啟bin-log,并指定文件目錄和文件名前綴
#log-bin = /home/log/mysql/mysql-binlog
#需要同步liting數(shù)據(jù)庫。如果是多個(gè)同步庫,就以此格式另寫幾行即可。如果不指明對(duì)某個(gè)具體庫同步,就去掉此行,表示同步所有庫(除了ignore忽略的庫)。
binlog-do-db = dbname1
binlog-do-db = dbname2
#不同步mysql系統(tǒng)數(shù)據(jù)庫。如果是多個(gè)不同步庫,就以此格式另寫幾行;也可以在一行,中間逗號(hào)隔開。
binlog-ignore-db = mysql
#確保binlog日志寫入后與硬盤同步
sync_binlog = 1
#跳過現(xiàn)有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_checksum = none
#bin-log日志文件格式,設(shè)置為MIXED可以防止主鍵重復(fù)。
binlog_format = mixed
#二進(jìn)制日志自動(dòng)刪除/過期的天數(shù)。默認(rèn)值為 0,表示不自動(dòng)刪除。
expire_logs_days = 1
#如果當(dāng)前的日志大小達(dá)到max_binlog_size,還會(huì)自動(dòng)創(chuàng)建新的二進(jìn)制日志
max_binlog_size = 100M
#表示 slave 將復(fù)制事件寫進(jìn)自己的二進(jìn)制日志
log_slave_updates = 1
#跳過主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免 slave 端復(fù)制中斷。
slave-skip-errors = all
#自增長(zhǎng)起始值
auto-increment-offset = 1
#自增長(zhǎng)步長(zhǎng)
auto-increment-increment = 2
# 服務(wù)器端和客戶端在一次傳送數(shù)據(jù)包的過程當(dāng)中最大允許的數(shù)據(jù)包大小
max_allowed_packet = 1024M
常用sql_mode說明
①ONLY_FULL_GROUP_BY
對(duì)于GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現(xiàn),那么這個(gè)SQL是不合法的,因?yàn)榱胁辉贕ROUP BY從句中
②NO_AUTO_VALUE_ON_ZERO
該值影響自增長(zhǎng)列的插入。默認(rèn)設(shè)置下,插入0或NULL代表生成下一個(gè)自增長(zhǎng)值。如果用戶希望插入的值為0,而該列又是自增長(zhǎng)的,那么這個(gè)選項(xiàng)就有用了。
③STRICT_TRANS_TABLES
如果一個(gè)值不能插入到一個(gè)事務(wù)中,則中斷當(dāng)前的操作,對(duì)非事務(wù)表不做限制
④NO_ZERO_IN_DATE
不允許日期和月份為零
⑤NO_ZERO_DATE
mysql數(shù)據(jù)庫不允許插入零日期,插入零日期會(huì)拋出錯(cuò)誤而不是警告
⑥ERROR_FOR_DIVISION_BY_ZERO
在insert或update過程中,如果數(shù)據(jù)被零除,則產(chǎn)生錯(cuò)誤而非警告。如果未給出該模式,那么數(shù)據(jù)被零除時(shí)Mysql返回NULL
⑦NO_AUTO_CREATE_USER
禁止GRANT創(chuàng)建密碼為空的用戶
⑧NO_ENGINE_SUBSTITUTION
如果需要的存儲(chǔ)引擎被禁用或未編譯,那么拋出錯(cuò)誤。不設(shè)置此值時(shí),用默認(rèn)的存儲(chǔ)引擎替代,并拋出一個(gè)異常
⑨PIPES_AS_CONCAT
將"||"視為字符串的連接操作符而非或運(yùn)算符,這和Oracle數(shù)據(jù)庫是一樣是,也和字符串的拼接函數(shù)Concat想類似
⑩ANSI_QUOTES
不能用雙引號(hào)來引用字符串,因?yàn)樗唤忉尀樽R(shí)別符