1.这里先说明一下主库和从库在主从复制的配置上是有些不同的
2.my.cnf 以下配置是综合姜承尧和知数堂
[client] port=xxx ##自己的端口号 socket = /data/mysql/mysql.sock ##自己的套字节的路径 [mysql] prompt="\u@mysqldb \R:\m:\s [\d]> " no-auto-rehash [mysqld] ###############basic settings############# user=mysql port=xxxx #自己定义 server_id=xxxx #自己定义 basedir=/usr/local/mysql #这个一般比较固定 datadir=/data/mysql #自己定义,这个一般要求程序和数据进行分离 socket =/data/mysql/mysql.sock #自己定义 pid-file=/data/mysql/mysqld.pid #路径自己定义 report-host=xxxxx #这里填写本机的ip的地址 ##bind_address=xxx #这里表示运行能访问此数据库的ip地址 log_timestamps=system character_set_server=utf8mb4 skip_name_resolv =1 #不对DNS进行解析 transaction_isolation = READ-COMMITTED max_connections = 800 #自己定义 max_connect_errors = 1000 #自己定义 interactive_timeout = 1800 wait_timeout = 1800 explicit_defaults_for_timestamp = 1 query_cache_size = 0 ##关闭查询缓冲 query_cache_type = 0 tmpdir = /tmp tmp_table_size = 67108864 ##大小要视情况而定 max_allowed_packet = 16777216 ##大小要视情况而定 ##sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER" ###这个5.7中有默认 key_buffer_size = 32M ##表示索引(Myisam)缓冲区大小,它决定索引处理的速度,特别是读的速度。默认是8M read_rnd_buffer_size = 33554432 ##大小要视情况而定 sort_buffer_size = 33554432 ##大小要视情况而定 join_buffer_size = 134217728 ##大小要视情况而定 read_rnd_buffer_size = 4M ##MySql的随机读(查询操作)缓冲区大小 bulk_insert_buffer_size = 64M ###############################log settings(error log slow log )############### log_error=/data/mysql/error.log ###路径自己定义 slow_query_log = 1 slow_query_log_file = slow.log ###路径自己定义,默认是放在数据目录下,默认是主机名-slow.log log_queries_not_using_indexes = 1 log_slow_admin_statements = 1 log_slow_slave_statements = 1 log_throttle_queries_not_using_indexes = 10 expire_logs_days = 90 long_query_time = 2 min_examined_row_limit = 100 ###################replcation settings####################### log_bin=/data/mysql/binlog/ ##这个一般我会定义一个binlog目录,然后将binlog日志放里面去 gtid_mode = on enforce_gtid_consistency = 1 log_slave_updates binlog_format = row master_info_repository = TABLE relay-log-purge = 1 ##这个默认是打开的,表示是否自动清空不再需要的中继日志 relay_log_info_repository = TABLE #sql线程高可用 relay_log_recovery = 1 #io线程高可用 relay_log = relay.log ##这个路径自己定义 slave_skip_errors = ddl_exist_errors ##复制时跳过DDL操作错误 ########################innodb settings############### innodb_page_size = 8192 #这是数据页的大下 innodb_buffer_pool_size = 6G #根据实际情况修改 innodb_buffer_pool_instances = 8 innodb_buffer_pool_load_at_startup = 1 #预热功能 innodb_buffer_pool_dump_at_shutdown = 1 innodb_open_files = 65535 ##这个是打开文件的最大数 innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 innodb_lru_scan_depth = 2000 ##这个默认是1024 innodb_data_file_path = ibdata1:1G:autoextend ###按我理解是当系统表空间(ibdata1)达到阈值时,它会按照1G的容量进行自动扩容 innodb_lock_wait_timeout = 5 ##锁等待时间 innodb_print_all_deadlocks = 1 #当启用该选项,所有信息死锁在 InnoDB用户交易被记录在 mysqld 错误日志 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 innodb_log_group_home_dir = /redolog/ #根据实际情况修改 innodb_log_buffer_size = 16777216 innodb_log_file_size = 2G ##这个主要是redo log 日志的大小,默认是48M innodb_log_files_in_group = 3 innodb_undo_directory = /undolog/ #根据实际情况修改 innodb_max_undo_log_size = 4G ##这个表示每个undo日志的最大容量,默认是1G innodb_undo_logs = 128 innodb_undo_tablespaces = 3 innodb_undo_log_truncate = 1 innodb_flush_sync = 0 ##默认是禁止 innodb_flush_neighbors = 1 innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_purge_threads = 4 innodb_page_cleaners = 4 innodb_max_dirty_pages_pct = 50 ##这个是脏页的刷新占比,默认是75% innodb_flush_method = O_DIRECT ##这个表示数据页和redo log做持久化时用到的一个刷盘策略。 innodb_large_prefix = 1 ##这个在5.7中是默认开启的 innodb_thread_concurrency = 0 ##并发线程数不做限制 innodb_strict_mode = 1 innodb_sort_buffer_size = 67108864 myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 #innodb_status_file = 1 ##这是开启innodb状态的参数, #innodb_status_output = 0 ##这个表示开启或关闭标准监控器 #innodb_status_output_locks = 1 ##这个表示开始或关闭锁监控器,如果要启动锁监控器,那么一定要开启标准监控器 #innodb_rollback_on_timeout = 1 #performance_schema performance_schema = 1 #performance_schema_instrument = ‘%memory%=on‘ #performance_schema_instrument = ‘%lock%=on‘ ##########semi sync replication settings(半同步复制,这种复制使得数据更有安全一些)########### plugin_dir=/usr/local/mysql/lib/plugin #根据实际情况修改 plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" loose_rpl_semi_sync_master_enabled = 1 #控制是否在源上启用半同步复制。要启用或禁用插件,请将此变量分别设置为1或0。默认值为0(关闭) loose_rpl_semi_sync_slave_enabled = 1 # loose_rpl_semi_sync_master_timeout = 5000 #一个以毫秒为单位的值,用于控制源在超时并恢复为异步复制之前等待复制副本提交确认的等待时间。默认值为10000(10秒)。 #######################多线程复制(这个一般是在从库上进行配置)################################ #slave_parallel_type=‘logical_clock‘; #slave_parallel_workers=4 [mysqldump] quick max_allowed_packet = 32M ##mysql根据配置文件会限制server接受的数据包的大小
原文:https://www.cnblogs.com/zmc60/p/14496320.html