1.MySQL 主库执行
容器化安装:
mkdir -p /data/mysql/{conf,log,data} #创建数据和配置目录,下面适用于mysql 8.0.25
生成配置文件/data/mysql/my.cnf #调整容器中my.cnf中参数[client]和!includedir的位置
cat > /data/mysql/my.cnf <<'EOF'
[client]
socket=/var/run/mysqld/mysqld.sock[mysqld]
user=mysql
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid
lower_case_table_names=1skip-host-cache
skip-name-resolve
bind-address=0.0.0.0
secure-file-priv=/var/lib/mysql-files# ----------------- 主从复制 -----------------
server-id=1
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
sync_binlog=1gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE# ----------------- 性能 -----------------
max_connections=2000
innodb_buffer_pool_size=3G # 机器 7GB 内存可分配 ~3G 给 InnoDB
innodb_log_file_size=512M
sort_buffer_size=2M
open_files_limit=65535
max_allowed_packet=128M# ----------------- 日志 -----------------
log-error=/var/log/error.log
slow-query-log=1
slow-query-log-file=/var/log/mysql/slow-query.log
long_query_time=3!includedir /etc/mysql/conf.d/
EOF
扩展-后续修改mysql容器配置如下案例(新增*.conf写入配置参数即可):
vim /data/mysql/conf/extra.cnf[mysqld]sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
启动:
docker run -p 3306:3306 --name mysql8 --restart always -v /etc/localtime:/etc/localtime \-v /data/mysql/conf:/etc/mysql/conf.d \-v /data/mysql/log:/var/log/ \-v /data/mysql/data:/var/lib/mysql \-v /data/mysql/my.cnf:/etc/my.cnf \-e MYSQL_ROOT_PASSWORD=tcbnYaGLGkz8dnxx -d mysql:8.0.25
开启远程权限
docker exec -it mysql8 bashmysql -uroot -ptcbnYaGLGkz8dnxxALTER USER 'root'@'%' IDENTIFIED BY 'tcbnYaGLGkz8dnxx';FLUSH PRIVILEGES;