mysql8.4.3配置主从复制

-- 停止复制进程
STOP REPLICA; -- MySQL 8.0+
--STOP SLAVE; (MySQL 5.7 及以下)

-- 重置所有复制配置(删除中继日志和元数据)
RESET REPLICA ALL; -- MySQL 8.0+
-- 或 RESET SLAVE ALL; (MySQL 5.7 及以下)

先把数据库导出sql,导入从库,列表库必须存在,并且初始值一样,然后就可以按照下面的日志同步了

1、主库

# 主库复制必备设置
server-id=1                    # 主库ID必须为1
log-bin=mysql-bin              # 启用二进制日志
#binlog-do-db=*                 # 可选:指定需要复制的数据库,*表示所有库
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog_format=ROW              # 推荐使用ROW格式
log-slave-updates=1            # 允许从库将复制事件写入自己的binlog
expire-logs-days=90            # 二进制日志保留天数

2、从库

server-id=2
log-bin=mysql-bin
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
# 完全只读模式,仅复制线程可写,
# super_read_only=1 
binlog_format=ROW
# 跳过"Can't find record"错误,这个开启,就是操作主库,从库没有的数据,报错,导致从库停止,开启后,不会停止,出现这一种情况,就是全量同步没做好,全量好,不会有这一种问题,如果需要就开启,操作到从客户没有的数据不报错
# slave_skip_errors = 1032  
# 跳过 "Operation DROP USER failed" 错误,跳过创建用户错误,删除了原同步账号,在创建
slave_skip_errors = 1396  
# 跳过所有错误(极端风险!),使命复制,不一样了,自己写个代码,删库,重新建库导入
slave_skip_errors = ALL

3、主库执行命令

--SHOW BINARY LOGS;
SHOW BINARY LOG STATUS

需要这两个值
在这里插入图片描述
主库创建复制账号,密码

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;

4、从库执行命令

-- 步骤1: 停止复制IO线程
STOP REPLICA IO_THREAD;
-- 停止所有
STOP REPLICA;

-- SOURCE_LOG_FILE='主库SHOW BINARY LOG STATUS输出的File值',
-- SOURCE_LOG_POS=主库SHOW BINARY LOG STATUS输出的Position值;
CHANGE REPLICATION SOURCE TO
  SOURCE_HOST='IP地址',
  SOURCE_USER='repl_user',
  SOURCE_PASSWORD='password',
  SOURCE_PORT=40010,
  SOURCE_LOG_FILE='binlog.000015',
  SOURCE_LOG_POS=1351,
  SOURCE_AUTO_POSITION=0;

-- 步骤3: 启动复制IO线程
START REPLICA IO_THREAD;
#启动复制,在从服务器(node节点上面)
START replica;

-- 步骤4: 验证复制状态
SHOW REPLICA STATUS;

完整配置

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
no-auto-rehash

[mysqld]
port=3306
datadir = /usr/local/mysql/data
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
max_connections=2000
default-storage-engine=INNODB
innodb_lock_wait_timeout = 120

innodb_use_native_aio = 0

default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 30M
max_allowed_packet = 100M
table_open_cache = 4096
sort_buffer_size = 20M
net_buffer_length = 40K
read_buffer_size = 20M
read_rnd_buffer_size = 556K
myisam_sort_buffer_size = 40M
thread_cache_size = 512
tmp_table_size = 50M
explicit_defaults_for_timestamp = true
#skip-name-resolve
open_files_limit = 65535
binlog_expire_logs_seconds = 600000
slow_query_log=1
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 200M
innodb_log_file_size = 20M
innodb_log_buffer_size = 20M
innodb_flush_log_at_trx_commit = 2
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 56
innodb_write_io_threads = 56

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

[mysqldump]
quick
max_allowed_packet = 100M

[myisamchk]
key_buffer_size = 100M
sort_buffer_size = 16M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

# 主库复制必备设置
server-id=1                    # 主库ID必须为1
log-bin=mysql-bin              # 启用二进制日志
#binlog-do-db=*                 # 可选:指定需要复制的数据库,*表示所有库
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog_format=ROW              # 推荐使用ROW格式
log-slave-updates=1            # 允许从库将复制事件写入自己的binlog
expire-logs-days=7             # 二进制日志保留天数


[mysqld]
port=33306
basedir=E:\mysql8.4.3\mysql-8.4.3-winx64
datadir=E:\mysql8.4.3\mysql-8.4.3-winx64\data
max_connections=2000

server-id=2
log-bin=mysql-bin
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
# 完全只读模式,仅复制线程可写
# super_read_only=1 
binlog_format=ROW
# 跳过"Can't find record"错误,这个开启,就是操作主库,从库没有的数据,报错,导致从库停止,开启后,不会停止,出现这一种情况,就是全量同步没做好,全量好,不会有这一种问题,如果需要就开启,操作到从客户没有的数据不报错
# slave_skip_errors = 1032 
# 跳过 "Operation DROP USER failed" 错误,跳过创建用户错误,删除了原同步账号,在创建
slave_skip_errors = 1396  
# 跳过所有错误(极端风险!),使命复制,不一样了,自己写个代码,删库,重新建库导入
slave_skip_errors = ALL
### MySQL 8.4.3 配置指南 #### 主要配置文件位置 对于 Windows 系统而言,主要通过 `my.ini` 文件来调整 MySQL 的各项参数设置[^1];而在 Linux 平台下,则通常使用 `/etc/my.cnf` 或者位于数据目录中的同名文件来进行全局性的服务器选项定义[^2]。 #### 关键配置项说明 为了确保数据库性能最优,在编辑上述提到的配置文件时,建议仅修改那些已经充分理解其作用的关键条目。例如: - **innodb_buffer_pool_size**: 设置 InnoDB 存储引擎用于缓存表和索引数据的内存大小,默认情况下会自动分配一定比例的物理RAM给此池子。 - **max_connections**: 定义允许的最大并发连接数,过高可能导致资源耗尽而过低则影响用户体验。 - **query_cache_type & query_cache_size**: 虽然查询缓存特性已被标记为废弃并将在未来版本移除,但在某些特定场景下仍然可以启用以提升读取密集型应用的表现。 ```ini [mysqld] # 缓冲区大小设定 innodb_buffer_pool_size=4G # 最大连接数量控制 max_connections=200 # 查询缓存策略 (如果适用) query_cache_type=ON query_cache_size=67108864 # 单位字节,即64MB ``` #### 初始化安全设置 初次安装完成后应当立即执行安全性强化措施,这一步骤可以通过运行官方提供的脚本完成,具体操作是在终端输入命令 `sudo /usr/local/mysql/bin/mysql_secure_installation` 来引导用户逐步完善必要的保护机制,比如更改 root 用户密码、删除匿名账户等重要步骤[^3]。 #### 启动与管理服务状态 在 Windows 上可通过图形界面的服务管理器查看 MySQL 是否处于活动状态,并能方便地对其进行开启或关闭的操作。当遇到类似 "net start mysql80 提示发生系统错误5" 这样的权限相关问题时,可能是因为当前用户的权限不足所致,此时应确认是以管理员身份运行命令提示符窗口后再尝试启动服务[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值