06 单机实现主从数据库
一、历史版本删除
1.1 停止服务
1)在任务管理栏找到mysql结束任务。
2)管理员权限打开cmd命令行,net stop mysql(前提是知道你安装服务时,服务的名称是mysql)
1.2 卸载程序
1.3 删除服务
管理员启动命令行,查询mysql服务还是否存在,如果存在直接删除(下图是因为没有用管理员权限删除导致的)
1.4 删除环境变量,否则有可能会使用环境变量中配的全局mysql
1.5 重新初始化mysql,需要删除data文件夹的数据
二、安装主从数据库
2.1 配置my.ini(单机多mysql实例需要区别端口号)
主数据库,端口号默认设置3306
[mysqld]
port=3306
basedir=D:\\mysql\mysql_8.0_master
datadir=D:\\mysql\mysql_8.0_master\data
character-set-server=utf8mb4
default-storage-engine=INNODB
# 主库设置 server_id需要区别开
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
从数据库,服务端端口号和客户端端口号都设置为3308(两个端口号不统一,会造成连接失败)
[mysqld]
port=3308
basedir=D:\\mysql\mysql_8.0_slave
datadir=D:\\mysql\mysql_8.0_slave\data
character-set-server=utf8mb4
default-storage-engine=INNODB
# 主库设置 server_id需要区别开
server_id=1
log_bin=slave-bin
log_bin-index=slave-bin.index
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3308
default-character-set=utf8mb4
2.2 初始化data文件夹
新建data文件夹即可
2.3 主从数据库安装
2.3.1 主数据库安装
管理员权限,cd到主数据库的bin目录。
#console可视初始化安装
mysqld --initialize --console
#安装并定义服务名mysql_master
mysqld --install mysql_master
#启动mysql_master服务
net start mysql_master
#使用mysql自带的客户端,连接服务端连接器(pwd在前面console中已给出随机值)
mysql -uroot -p
#将root账号密码修改为root
alter user 'root'@'localhost' identified with mysql_native_password by 'root'
2.3.2 从数据库安装
命令行与上方基本一样,注意取名注册的服务名称带区别即可
这样主从数据库就都安装成功了,并且都已经启动了。
中途如果有安装失败,需要停止服务、删除注册服务即可。
#终止服务
net stop mysql
#删除注册服务信息
sc delete mysql
三、配置主从服务
因为slave数据库需要到连接到master数据库,并由master的bin log推动日志到slave。需要在主数据库中为slave配置USER账号信息。
3.1 创建主数据库的从属账号
CREATE USER 'follow'@'%' IDENTIFIED WITH mysql_native_password BY 'master_follow';
允许slave数据库在任何机器ip上使用follow账号连接主数据库。
3.2 指定新建的follow为主从同步账号
#指定从属关系
grant replication slave on *.* to 'follow'@'%';
#将mysql USER和privilege表中的用户信息和权限信息更新到内存中。
flush privileges;
3.3 查看master binlog的起始位置(用于记录后续从属数据库开始同步的日志位置)
show master status;
3.4 从库配置主库信息
#从库设置主库信息
mysql>change master to master_host='127.0.0.1',
master_port=3306,
master_user='follow',
master_password='follow',
master_log_file='master-bin.000002',
master_log_pos=1130;
#开启从库热备
start slave;
查看备份数据同步存在异常,slave_IO_Running:No,原因是主从数据库使用的server_id都是1,这样没法slave。
只有手动设置一下server_id,在my.ini文件里也同步改一下就可以了。