如何在windows系统安装多个mysql并配置主从?

同一台服务器配置多个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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容