[client]
port=3306
socket=/usr/local/mysql/mysql.sock
[mysql]
port=3306
socket=/usr/local/mysql/mysql.sock
auto-rehash #开启自动补全功能
[mysqld] #mysql全局配置
# 基础配置
user=mysql #管理用户
port=3306 #端口
basedir=/usr/local/mysql #数据库的安装目录
datadir=/usr/local/mysql/data #数据库文件的存储路径
socket=/usr/local/mysql/mysql.sock #数据库连接文件
pid-file=/usr/local/mysql/mysqld.pid #PID进程文件路径
character-set-server=utf8mb4 #默认字符集
default-storage-engine=INNODB #默认存储引擎
bind-address=0.0.0.0 #监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
lower_case_table_names=1 #库表名不区分大小写
# 连接优化
skip_name_resolve=1 #禁止域名解析,只能用IP地址检查客户端的登录
max_connections=1000 #最大连接数
max_connect_errors=100 #最大连接失败次数
max_allowed_packet=32M #最大允许传送的数据包大小。系统默认值为1MB,最大值是1GB,必须设置1024的倍数
# 主从复制配置及优化
server-id=1 #数据库ID号
gtid_mode=ON #启用GTID主从同步模式
enforce_gtid_consistency=ON #强制GTID一致性检查
log-bin=mysql-bin #启用二进制日志
binlog_format=MIXED #二进制日志格式为MIXED或ROW,主从复制时数据能够更加统一
binlog_row_image=FULL #行级日志的模式为FULL,二进制日志会记录所有数据表中修改前和修改后的内容,数据安全性高
relay-log=relay-bin #启用中继日志
master_info_repository=TABLE #主库信息存储在mysql.slave_master_info表中
relay_log_info_repository=TABLE #中继日志信息存储在mysql.slave_relay_log_info表中
expire_logs_days=7 #二进制日志文件过期时间,默认值为0,表示logs不过期
max_binlog_size=1G #二进制日志限制大小,默认值是1GB
slave_parallel_workers=16 #从库并行复制线程数
slave_parallel_type=LOGICAL_CLOCK #并行复制类型
binlog_transaction_dependency_tracking=WRITESET #控制事务依赖模式
transaction_write_set_extraction=XXHASH64 #WRITESET模式的hash算法
skip_slave_start=1 #作为从库启动时跳过自动开启数据同步
log-slave-updates=1 #作为从库从主库复制数据时也写入到二进制日志,从库要作为其他从库的主库时必须添加该参数
relay_log_recovery=1 #作为从库发现主从数据库之间的数据同步发生问题时,会重新从主库恢复relay log数据,从而保证主从数据库之间的一致性
# 性能优化
sync_binlog=1 #采用同步写磁盘的方式来写二进制日志,保证数据安全
innodb_flush_log_at_trx_commit=1 #设置redo_log的刷盘策略为每次提交事务都刷盘,保证数据安全
innodb_buffer_pool_size=24G #InnoDB存储引擎的缓冲池大小,设置为系统总内存的50%-80%,以8C32G服务器为例
innodb_buffer_pool_instances=8 #将innodb_buffer_pool划分为多个实例,可以减少多线程同时访问buffer_pool时的竞争,提高并行访问效率,设置为服务器的CPU核心数量
innodb_log_file_size=2G #redo_log的文件大小限制
innodb_log_buffer_size=128M #InnoDB缓存数据和索引的内存大小
innodb_file_per_table=1 #每张表独立一个表空间文件
innodb_io_capacity=2000 #InnoDB后台任务每秒可用的I/O操作数
innodb_read_io_threads=4 #读I/O线程个数,默认是4,可根据处理器内核数决定
innodb_write_io_threads=4 #写I/O线程个数,默认是4,可根据处理器内核数决定
innodb_flush_method=O_DIRECT #InnoDB刷新数据到磁盘的方式,选择O_DIRECT方式,可防止双写(避免在操作系统缓存和innodb缓存中存两份数据,innodb缓存的效率更高)
transaction_isolation=READ-COMMITTED #设置默认的事务隔离级别为已提交读
table_open_cache=4096 #打开表的缓存数量,适当增加可以提高访问表的效率
table_definition_cache=2048 #存放表定义的缓存数量,适当增加可以提高对表定义信息的访问效率
thread_cache_size=128 #客户端连接线程的缓存大小,mysql使用线程处理连接请求,适当增加可以减少线程创建开销
open_files_limit=65535 #mysqld进程能使用的最大文件描述符数量
sort_buffer_size=4M #每个线程排序操作的缓冲区大小
join_buffer_size=4M #用于JOIN操作的缓冲区大小
tmp_table_size=128M #临时表的内存大小
max_heap_table_size=256M #临时表可以使用的最大内存
-- 创建一个名为'myslave'的用户,允许从任何192.168.80.x的IP地址连接
CREATE USER 'myslave'@'192.168.80.%' IDENTIFIED BY 'myslave123';
-- 授予'myslave'用户复制从库的权限
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.80.%';
-- 刷新权限,使更改立即生效
FLUSH PRIVILEGES;
-- 配置从库连接到主库的参数
-- MASTER_HOST: 主库的IP地址
-- MASTER_PORT: 主库的端口号,默认是3306
-- MASTER_USER: 用于复制的用户名
-- MASTER_PASSWORD: 用于复制的用户密码
-- MASTER_AUTO_POSITION: 自动定位复制位置,适用于GTID(全局事务标识符)复制
CHANGE MASTER TO MASTER_HOST='192.168.80.15', MASTER_PORT=3306, MASTER_USER='myslave', MASTER_PASSWORD='myslave123', MASTER_AUTO_POSITION=1;
-- 启动从库的复制进程
START SLAVE;