1. mysql 参数和部署规范 没有整理 仅供参考
    2. 参数
    3. innodb_flush_log_at_trx_commit =0/1
    4. ACID的强一致性与commit之间性能的妥协
    5. 0.每秒刷出一次log 避免性能问题
    6. 1.在提交事务的时候 强制必须刷新所有log才算提交成功 每个事务提交和日志文件刷新到磁盘
    7. 2. 01之间自动调整
    8. innodb_flush_log_at_timeout可以控制刷出间隔多于1s
    9. sync_binlog=1
    10. 0 二进制日志不会同步到磁盘
    11. 1.所有事务都是同步的,二进制日志之前提交。
    12. innodb_file_per_table
    13. #独立表空间
    14. on/off
    15. innodb_data_file_path
    16. innodb数据文件和他们的大小。每个数据文件的完整目录路径是由链接innodb_data_home_dir指定路径
    17. long_query_time
    18. 慢查询日志 慢查询时间
    19. slow_query_log
    20. 开启慢查询日志
    21. slow_query_log_file
    22. 慢查询日志位置
    23. lower_case_table_names
    24. 大小写敏感
    25. 0.区分大小写
    26. 1.不分区大小写
    27. 2.创建的表和DB依据语句上格式存放,凡是查找都是转换为小写进行
    28. log_queries_not_using_indexes
    29. 记录没有使用索引的sql语句
    30. general_log on或者off
    31. 开启查询日志
    32. general_log_file
    33. 查询日志路径
    34. query_cache_size
    35. 查询缓存大小
    36. query_cache_type
    37. 0查询缓存禁用
    38. 1.开启
    39. max_connection(最大连接数)、 最大不要超过800
    40. max_connection_error(最大错误数,建议设置为10万以上,
    41. open_files_limit 最大打开文件数
    42. innodb_open_files innodb 打开最大文件数
    43. table_open_cache
    44. table_definition_cache这几个参数则可设为约10倍于max_connection的大小
    45. max_user_connections 每个用户最大链接
    46. binlog_format
    47. GTID相关(全局事物标识:global transaction identifieds
    48. gtid_mode=on
    49. 开启gtid
    50. enforce_gtid_consistency
    51. OFF:都是允许违反GTID一致性。
    52. ON:不允许违反GTID事务一致性。
    53. 推荐
    54. gtid_mode=on
    55. enforce_gtid_consistency=on
    56. master_info_repository
    57. # 记录到表中 master信息
    58. table mysql.slave_master_info
    59. FILE 记录到 master.info
    60. relay_log_info_repository
    61. FILE 记录到relay-log.info
    62. table 记录到mysql.slave_relay_log_info
    63. skip_slave_start=1
    64. #当服务停止 从的状态是关闭的
    65. auto_increment_increment
    66. 没次增长的步长
    67. auto_increment_offset
    68. 起始位置
    69. binlog_row_image
    70. 较少DML操作产生的binlog体积
    71. binlog_rows_query_log_events
    72. on 或者off
    73. 记录用户的query
    74. tx_isolation 查看当前事务隔离级别
    75. binlog_rows_query_log_events
    76. #查看用户输入参数
    77. log_bin_use_v1_row_events
    78. binlog版本
    79. log_slave_updates
    80. innodb_autoinc_lock_mode
    81. 1.默认设置 可预判行数时使用新方式 不可预判时仍旧使用表锁 会造成autoinc列自增空间 不过影响很小
    82. 0 即沿用旧的表级锁模式 每次请求都会等待锁 不过也非常快 不会影响整个事务 只影响当前的insert语句
    83. 2.直接全部使用新方式 不安全 不适合replication环境
    84. log_timestamps 坑爹参数 UTC(系统默认)和SYSTEM(本地系统时区)
    85. 该参数主要是控制 error loggenera log,等等记录日志的显示时间参数
    86. time_zone
    87. 系统的时区参数
    88. lock_wait_timeout 锁超时阀值定义 默认是1 记得调小
    89. 5.7 error log使用系统时间
    90. log_timestamps =0 日志中是UTC时区
    91. log_timestamps=1 日志中是SYSTEM时区
    92. 默认是log_timestamps=0
    93. set global log_timestamps = 1;
    94. innodb_spin_wait_delay 控制轮训间隔 默认6
    95. innodb_read_io_threads
    96. io进程数 默认是4 改成8
    97. innodb_write_io_threads
    98. io进程数 默认是4 改成8
    99. innodb_io_capacity
    100. 磁盘IO吞吐,具体为缓冲区落地的时候,可以刷脏页的数量,默认200,由于使用了SSD硬盘,所以推荐设置到3000-5000
    101. innodb_max_dirty_pages_pct
    102. 争议比较大,一般来说都是在75-90之间,主要控制BP中的脏数据刷盘的时机,如果太小会频繁刷盘造成IO上升,如果太大会导致MySQL正常关闭的时候需要很长的时间才能normal shutdown,具体需要看实际场景,个人推荐90
    103. innodb_force_recovery 1-6 启用故障恢复模式
    104. 1.即便发现损坏的页 实例也正常运行
    105. 2.避免innodb master 已经purge线程的运行
    106. 3.不回滚事务
    107. 4.避免 insert buffer 的合并
    108. 5.不扫描undo日志
    109. 6.不做redo前滚 会导致部分数据丢失
    110. (主库崩溃 从库没有
    111. 这时候 从库比主库的可信度要高)
    112. show engine innodb status\G
    113. innodb_undo_tablespaces=3 #设置undo个数
    114. innodb_undo_logs 设置undo表空间个数
    115. undo超过innodb_max_undo_log_size 会出发truncate工作
    116. purge执行innodb_purge_rseg-truncate_frequency次后
    117. 也会触发truncate工作
    118. 建议使用独立undo表空间
    119. innodb_page_size
    120. <5.6版本 不可调整
    121. 5.6版本时 8kb 4kb 但不能调大
    122. 5.7以上 32KB 64KB
    123. 全局选项 无法在运行过程中动态修改
    124. innodb_buffer_pool_instances
    125. 管理innodb buffer pool
    126. 一个instances 管理816g内存
    127. instances*buffer pool
    128. innodb_buffer_pool_load_at_startup
    129. mysql启动 自动加载之前保存的buffer pool
    130. innodb_buffer_pool_dump_at_shutdown
    131. 是否在关闭实例的时候保存 buffer pool的内容
    132. innodb_flush_method=O_DIRECT
    133. innodb flush 操作文件方法
    134. innodb_old_blocks_pct
    135. 设置老数据块占用 buffer pool的比例
    136. relay_log_recovery
    137. slave从库宕机 relay-log损坏
    138. 自动放弃未执行的relay-log 并且重新从master 获取日志
    139. 保证了relay-log的完整
    140. innodb_fill_factor
    141. innodb_flush_log_at_trx_commit
    142. 0 事务提交时不将redo log buffer写入磁盘
    143. 1事务提交时将redo log buffer写入磁盘
    144. 2 事务提交时 仅将redo log buffer写入操作系统缓存
    145. 通常设置为1 并且设置sync_binlog=1 以保证数据可靠性
    146. innodb_log_buffer
    147. 通常8-32M 足够了
    148. innodb_log_file_size
    149. 一般设置为512M-4G
    150. innodb_log_fles_in_group
    151. 至少2个文件
    152. 比较暴力 只有在需要干净重启时才需要
    153. innodb_fast_shutdown=0,1,2
    154. 扫描列表 并找到邻居页面(innodb_flush_neighbors=1 机械硬盘适用 ssd盘可关闭)一起刷新
    155. 重点参数
    156. innodb_buffer_pool_size
    157. 最大内存块 建议为物理内存的50%-80%
    158. innodb_max_dirty_pages_pct
    159. buufer pooldirty page 最大占比 建议不超过50%
    160. innodb_old_blocks_pct
    161. buffer pool old block sublist 最大占比 默认3/8
    162. innodb_change_buffering
    163. change buffer 类型 all或其他
    164. innodb_log_buffer_size
    165. redo log buffer 能缓存5秒左右产生的redo log 能够
    166. 32MB基本管够
    167. innodb_sort_buffer_size
    168. innodb 表新创建索引时 批量加载更新索引 以及online ddl
    169. 将当前发生dml记录到临时log
    170. innodb_data_file_path
    171. 共享表空间初始大小 至少1G以上
    172. innodb_log_file_size
    173. redo log 大小 加大有助于减少checkpoint 频率 tps
    174. innodb_flush_log_at_trx_commit
    175. redo log 刷新机制 1最安全 0性能最高
    176. innodb_io_capacity
    177. innodb 后台线程最大iops上限
    178. innodb_flush_method
    179. 刷新innodb date filelog file使用的方式
    180. 推荐O_DIRECT
    181. innodb_stats_on_metadata=0
    182. 执行 show table status show index时是否更新统计信息
    183. innodb_autoinc_lock_mode=1
    184. auto-inc锁模式 推荐是1
    185. innodb_file_per_table=1
    186. 是否独立表空间
    187. innodb_fast_shutdown=0/1
    188. 是否快速关闭 推荐1 需要版本升级或者机器重启 设置为0
    189. innodb_force_recovery =0
    190. 恢复级别 可选0-6 从最小开始尝试起
    191. 关闭CPU节能,设定为最大性能模式
    192. 关闭NUMA C-states C1E
    193. biosos 都要关闭
    194. os里面关闭numa
    195. CENTOE7
    196. GRUB_CMDLINE_LINUX="rhgb quiet numa=off"
    197. grub2-mkconfig -o /boot/grub2/grub.cfg #重新生成
    198. CENTOS6
    199. /etc/grub.confkernel行最后添加numa=off,如下所示:
    200. 阵列卡策略 机械盘好用wb sshd wt模式 根据实际情况自己做测试
    201. wbwrite back 先写缓冲在写硬盘 机器盘 wb
    202. wt write through 直接写硬盘 ssdwt
    203. ssd wb改成wt iops没什么变化 但是 io的%util上升了很多
    204. 正常 wb模式至少比wtiops高一倍以上
    205. 测试工具
    206. 机械盘时,所有盘所组成RAID10陈列
    207. SSD盘可以只有二块组成RAID1 或三块做RAID5 最好不用同一个批次的ssd
    208. XFS +deadine/noop
    209. /sys/block/sda/queue/scheduler
    210. anticipatory:猜想时间(适合大文件,如果数据连续猜想时间小为好,如果数据不太连续,时间大较好)
    211. deadline:最终期限(对小数据优)
    212. cfq:完全公平
    213. noop:不调整,在iosched里面没有任何调优参数(适合ssd硬盘和单独的存储)
    214. [root@localhost queue]# sysctl -a | grep swap
    215. vm.swappiness = 30 #系统优先使用swap和内存
    216. [root@localhost queue]# sysctl -a | grep ratio
    217. vm.dirty_ratio = 30 #脏页占整个内存的比例,开始刷新
    218. vm.dirty_background_ratio = 10 #脏页占程序的百分比 ,开始刷新
    219. net.ipv4.tcp_tw_recycle = 0
    220. net.ipv4.tcp_tw_reuse = 0
    221. #设置为1 减少TIME_WAIT 提高TCP效率
    222. 建议值
    223. vm.swappiness <=10
    224. vm.dirty_ratio <=5
    225. vm.dirty_background_ratio <= 10
    226. #mysql 服务器要不要swap 取决于 你希望mysql半死不活,还是快速重启
    227. mount 选项 noatime nodiratime nobarrier选项
    228. mysql安装规范
    229. basedir datadir backupdir binlogdir
    230. mysql参数
    231. innodb_flush_log_at_trx_commit & sync_binlog =1 #数据的安全性
    232. 每次事务提交mysql都会把log buffer 的数据写入log file ,并且flush(刷新到磁盘)中
    233. #0 每秒钟刷出一次log,避免性能问题
    234. #1在事务提交的时候 强制必须刷出所有的log才算提交成功
    235. sync_binlog =1
    236. 二进制日志同步到磁盘的频率。 binary log 每次写入sync_binlog 1次后 刷写到磁盘
    237. innodb_file_per_table =1/on
    238. innodb 独立表空间
    239. innodb_data_file_path 至少是1G
    240. #innodb 表空间l
    241. long_query_time <=0.5
    242. #开启慢查询日志
    243. lower_case_table_names
    244. #表的大小写是否敏感
    245. 0区分大小写
    246. 1不区分大小写
    247. max_connection(最大连接数)、
    248. max_connection_error(最大错误数,建议设置为10万以上,
    249. open_files_limitinnodb_open_filestable_open_cachetable_definition_cache这几个参数则可设为约10倍于max_connection的大小
    250. # 不使用 qc
    251. query_cache_size =0
    252. query_cache_type =0
    253. qc是查询缓存用于缓存select查询语句,并在下次使用的时候不去查询直接走返回的结果。
    254. 如果一张表里面有 update insert delect语音 他就重新计算hash 然后在计算缓存值
    255. qc的使用场景 一张表里面 99.999%都是读业务
    256. redis
    257. vm.overcommit_memory = 1
    258. 0 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
    259. 1 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
    260. 2 表示内核允许分配超过所有物理内存和交换空间总和的内存
    261. 学习方法
    262. 手册
    263. 基础知识 事务 b+树
    264. /sys/block/sda/queue/scheduler
    265. anticipatory:猜想时间(适合大文件,如果数据连续猜想时间小为好,如果数据不太连续,时间大较好)
    266. deadline:最终期限(对小数据优)
    267. cfq:完全公平
    268. noop:不调整,在iosched里面没有任何调优参数(适合ssd硬盘和单独的存储)
    269. [root@localhost queue]# sysctl -a | grep swap
    270. vm.swappiness = 30 #系统优先使用swap和内存
    271. [root@localhost queue]# sysctl -a | grep ratio
    272. vm.dirty_ratio = 30 #脏页占整个内存的比例,开始刷新
    273. vm.dirty_background_ratio = 10 #脏页占程序的百分比 ,开始刷新
    274. net.ipv4.tcp_tw_recycle = 0
    275. net.ipv4.tcp_tw_reuse = 0
    276. #设置为1 减少TIME_WAIT 提高TCP效率
    277. 建议值
    278. vm.swappiness <=10
    279. vm.dirty_ratio <=5
    280. vm.dirty_background_ratio <= 10
    281. #mysql 服务器要不要swap 取决于 你希望mysql半死不活,还是快速重启
    282. mount 选项 noatime nodiratime nobarrier选项
    283. mount的时候加上 noatime属性