同一台服务器配置多个mysql服务,并配置主写从读;[注意:主库与从库的server_id不能相同]
一: 首先安装mysql主服务.
二: 创建my.ini文件,在主服务mysql根目录添加my.ini文件并加入以下内容:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3366
default-character-set=utf8mb4
[mysqld]
# 设置3366端口
port=3366
# 设置mysql的安装目录,修改成自己的目录
basedir=D:\mysql
# 设置mysql数据库的数据的存放目录,修改成自己的目录
datadir=D:\mysql\data
# 允许最大连接数
max_connections=600
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=300
# 服务端使用的字符集默认为UTF8mb4
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 主从同步配置信息
log-bin=mysql.bin
# 使binlog在每N次binlog写入后与硬盘同步
sync-binlog=1
# 1天时间自动清理二进制日志
expire_logs_days=1
# 需要同步的数据库
binlog-do-db=test
# 不需要同步的数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
binlog-ignore-db = bak
binlog-ignore-db = sys
binlog-ignore-db = omserver
binlog-ignore-db = sakila
binlog-ignore-db = smp_base_1_0
binlog-ignore-db = smp_base_2
binlog-ignore-db = smp_emx_1_0
binlog-ignore-db = smp_emx_2
binlog-ignore-db = smp_maint_1_0
binlog-ignore-db = smp_maint_2
# Error Logging.
log-error="WIN-1QQDRPR5R2M.err"
# Server Id.主服务与从服务的server id不能重复
server-id=1
[WinMySQLAdmin]
#修改成自己的目录
D:\mysql\bin\mysqld.exe
三: 安装完毕之后,(查看根目录下是否有data文件,若没有创建该文件).使用管理员 powerShell进入cmd命令行:
1. 打开powershell命令窗口;
2. 输入cmd命令切换入cmd至dos窗口;
3. 进入你安装mysql的bin目录(cd D:\mysql\bin)
四: 配置并注册主服务的相关信息
1. 初始化数据库(切记将'localhost'后面的密码保存下来.);
mysqld --initialize --console
2. 注册mysql服务自定义线服务名称:
mysqld install mysql3366 --defaults-file="D:\mysql\my.ini"
其中mysql3366为你的mysql服务名称
3. 启动服务:
net start mysql3366
附: [
停服务: net stop mysql3366
]
4. 使用root账号登录主服务mysql(-P指定端口登录)
mysql -u root -p -h localhost -P 3366
输入刚才记录的密码(如果忘了密码也没关系,将根目录下的data目录里面的内容删除,重新执行初始化数据库命令)
(1.) 更改用户密码
alter user 'root'@'localhost' IDENTIFIED BY 'root';
5. 查看bin_log是否开启(value为ON则为开启状态):
show variables like 'log_bin';
6. 查看主库的状态:
show binlog events; --查询binlog 变动信息
show master status; --查看主库 状态--
7. 在主库创建同步数据用户信息并授权:
(1.) 创建用户
create user test identified by '123456';
(2.) 授权
grant replication slave on *.* to 'test'@'%';
(3.) 刷新权限
flush privileges;
8. 在主库中创建数据库:
create database test;
use test;
create table test(id int(11),name varchar(50));
至此不要对主库进行操作;
五: 创建备库--SLAVE服务创建流程:
1. 将主库安装文件信息拷贝一份
2. 更改my.ini文件内容如下:
在从库安装根目录创建my.ini文件加入以下内容:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3376
default-character-set=utf8mb4
[mysqld]
# 设置3376端口
port=3376
# 设置mysql的安装目录,修改成自己的目录
basedir=D:\mysql-slave
# 设置mysql数据库的数据的存放目录,修改成自己的目录
datadir=D:\mysql-slave\data
# 允许最大连接数
max_connections=600
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=300
# 服务端使用的字符集默认为UTF8mb4
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 主从同步配置信息
# Server Id.
server-id=2
log_bin=mysql-bin
# 二进制日志自动删除的天数
expire_logs_days=1
[WinMySQLAdmin]
#修改成自己的目录
D:\mysql\bin\mysqld.exe
3. 创建好my.ini文件之后执行初始化与创建服务操作
(1). 打开powershell命令窗口;
(2). 输入cmd命令切换入cmd至dos窗口;
(3). 进入你安装(拷贝)mysql的bin目录(cd D:\mysql-slave\bin),执行以下命令:
1). 初始化数据库(切记将'localhost'后面的密码保存下来.);
mysqld --initialize --console
2). 注册mysql服务自定义线服务名称:
mysqld install mysql3376 --defaults-file="D:\mysql\my.ini"
其中mysql3307为你的mysql服务名称
3). 启动服务:
net start mysql3376
附: [
停服务: net stop mysql3376
]
4). 使用root账号登录主服务mysql(-P指定端口登录)
mysql -u root -p -h localhost -P 3376
输入刚才记录的密码(如果忘了密码也没关系,将根目录下的data目录里面的内容删除,重新执行初始化数据库命令)
(1.) 更改用户密码
alter user 'root'@'localhost' IDENTIFIED BY 'root';
5). 执行主从关联(master_log_file,master_log_pos 根据 主库 show master status;显示信息设置,用户密码为主库创建并授权的那个用户密码):
change master to master_host='127.0.0.1',master_port=3366,master_user='test',master_password='123456',master_log_file='master-bin.000002',master_log_pos=154;
start slave;--开启服务 stop slave; 关闭服务
6). 显示备库状态:
master_log_file,master_log_pos 根据 主库 show master status; 显示信息设置
[
以下两个字段为YES才是正常的,如果不是可以查看Last_Error字段显示的报错信息
Slave_IO_Running YES
Slave_SQL_Running YES
]
至此配置已完成.可以在主数据库表中增加或删除数据,如果从数据库中数据跟着一起执行,那么就配置成功!
若还是失败状态.可以关掉服务,在环境变量path中加入这两个mysql的安装目录指定到bin文件夹下,再重启执行.记得带分号;啊@@@!!!
常用命令:
初始化数据库(记住密码):
mysqld --initialize --console
注册服务名:
mysqld install mysql3307 --defaults-file="D:\mysql\my.ini"
启动服务:
net start mysql; --mysql为你的服务名
关闭服务:
net stop mysql; --mysql为你的服务名
修改用户密码:
alter user 'root'@'localhost' IDENTIFIED BY '123456';
创建用户:
create user 'root1'@'%' identified by '123456';
授权:
grant all privileges on *.* to 'root1'@'%';
修改用户登录密码加密规则:
ALTER USER 'root1'@'%' IDENTIFIED WITH mysql_native_password BY '123456'
更新一下用户的密码:
ALTER USER 'root1'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
刷新权限:
flush privileges;