发布:2023/4/16 0:37:37作者:管理员 来源:本站 浏览次数:947
目录
一.主库配置
二.数据复制
三.从库配置
四.从库宕机解决方案
五.从库误删数据
六.主库宕机
一.主库配置
1.修改主库my.ini
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录
datadir=D:\DataBase\mysql\data
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=1
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库
binlog-do-db=nctest_zj
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
2.打开cmd,登录主库(或者navicat,连接主库,打开命令列)
mysql -u root -p
3.授权主从复制专用账号
mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'by123456';
4.刷新权限
msyql> flush privileges;
5.查询主库信息,记录下文件名和position
msyql> show master status;
二.数据复制
1.设置主库只读,避免新增修改数据
set global read_only=1;
flush tables with read lock;
2.复制数据
3.恢复第一步的设置
unlock tables;
set global read_only=0;
三.从库配置
1.打开从库my.ini
server-id 不可以和主库一样
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# skip-grant-tables
group_concat_max_len=102400
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\DataBase\mysql
# 设置mysql数据库的数据的存放目录
datadir=D:\DataBase\mysql\data
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=2
#默认不开启二进制日志,需要配置
log-bin=mysql-bin
#设置需要同步的数据库
replicate_wild_do_table=nctest_zj.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
2.cmd登录从库,或者navicat打开命令列
3.根据主库的文件名和position,配置从库信息
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000039',MASTER_LOG_POS=47257;
4.启动服务
# 开启
mysql> start slave
# 停止
mysql> stop slave
# 重启
mysql> reset slave
5.查看从库状态
mysql>show slave status\G
保证下面两个值是yes则主从配置成功,如果有一个为no则需要查看日志定位原因。
(show variables like 'log_error';)去相应的目录查看日志
6.为从库创建用户,配置只读权限
create user nymi identified by 'by123456';
grant select on *.* to nymi@'%' ;
flush privileges;
项目中用此用户连接数据库,避免用从库的root用户修改数据导致主从复制失效。
四.从库宕机解决方案
重启后,一般来说会继续mysql停止时的position继续同步。
如果主从复制失效,则重新配置走以下步骤
主库:
show variables like 'log_error';
查看日志中的position,
从库
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
(file信息来自 主库中的 show master status;)
start slave;
思路就是找到正常的一个节点,进行数据同步
五.从库误删数据
1.项目用只读用户连接从库,避免误删
2.恢复误删数据,然后按照第四步解决
3.重新同步数据,按照第三步解决
六.主库宕机
1.重启主库,查看从库状态
2.若未解决,则主库从库分别执行以下语句,将主库语句查到的文件名和position在从库重新指定
show master status;
stop slave;
CHANGE MASTER TO MASTER_HOST='192.168.1.15',MASTER_PORT=3306,MASTER_USER='root', MASTER_PASSWORD='root',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
start slave;
© Copyright 2014 - 2025 柏港建站平台 ejk5.com. 渝ICP备16000791号-4