发布:2023/4/16 16:57:56作者:管理员 来源:本站 浏览次数:722
[WinMySQLAdmin] D:\\soft\\mysql\\mysql-5.7.19-winx64\\bin\mysqld.exe #解压根目录\bin\mysqld.exe
关闭mysql服务,默认服务名为MySQL
技术图片
将mysq-5.7.19-win64复制一份更名为mysql3307
技术图片
二、安装第二款mysql5.7(mysql3307)
2.1、修改mysql3307下的my.ini文件
[client]
port=3307
default-character-set=utf8
#客户端字符类型,与服务端一致就行,建议utf8
[mysqld]
port=3307
character_set_server=utf8
#服务端字符类型,建议utf8
basedir=D:\\soft\\mysql\\mysql3307
#解压根目录
datadir=D:\\soft\\mysql\\mysql3307\\data
#解压根目录\data
#从数据库配置
server-id=2
relay-log-index=chongli-relay-bin.index
relay-log=chongli-relay-bin
2.2、安装
1.管理员打开cmd.exe,进入mysql3307的bin目录下执行
mysqld --install MySQL3307 --defaults-file="D:\soft\mysql\mysql-5.7.19-two\my.ini" #安装MySQL3307服务
技术图片
2.注册表修改
windows+R 调取运行框,输入regedit打开注册表,修改
HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->Services-->MySQL/MySQL3307
与
HKEY_LOCAL_MACHINE-->SYSTEM-->ControlSet001-->Services--> MySQL/MySQL3307
下的ImagePath属性
修改为:
D:\soft\mysql\mysql-5.7.19-winx64\bin\mysqld --defaults-file=D:\soft\mysql\mysql-5.7.19-winx64\my.ini MySQL #MySQL服务明确指定使用的配置文件my.ini
D:\soft\mysql\mysql-5.7.19-winx64\bin\mysqld --defaults-file=D:\soft\mysql\mysql3307\my.ini MySQL3307 #MySQL3307服务明确指定my.ini
3.启动MySQL3307服务,登录mysql验证是否安装成功。
4.启动MySQL服务,登录mysql验证mysql主从数据库服务能否同时启动 以及各自端口号是否错乱。
mysql -uroot -p密码 -P端口号 (端口号对应的P大写)
三、其他修改项
经过实际搭建过程中,发现了几点问题,在前面进行展示,如果想直接跨过这个坑,可以跳到第四步
1.为注册表配置,该坑第二步已经跨过,此处展示未跨过情形
该命名执行成功后:mysqld --install MySQL3307 --defaults-file="D:\soft\mysql\mysql3307 \my.ini" ,按照我的理解应该就是指定了使用哪里的my.ini配置文件
我删除mysql3307目录下的data目录,通过初始化命令重新生成data目录
mysqld --initialize --user=mysql3307 --console //出现两种情况
第一种:执行失败 提示data文件已经存在(其实它就是使用了mysq-5.7.19-win64下的my.ini)
第二种:执行成功 导致MySQL3307与MySQL服务不能同时启动,端口也会错乱(原因就是端口冲突:MySQL3307与MySQL服务其实就是同一个,只是名字不一样)
解决:修改注册表 再删除mysql3307下的data 重新执行mysqld --initialize --user=mysql3307 --console
2.uuid不可一样:一样会导致主从同步时 Slave_IO_Running: NO
解决:data目录下的auto.cnf文件中修改uuid的值
技术图片
3.创建用户错误:会导致主从同步时 Slave_IO_Running: Connecting(说明从库没有连上主库)
错误重现:因为我很早以前学习搭建主从同步的时候执行过,不过最后失败了也就没管
create user ‘chongli‘@‘%‘ IDENTIFIED BY ‘199404‘; #创建用户
GRANT REPLICATION SLAVE ON *.* TO ‘chongli‘@‘%‘; #分配权限
flush privileges; #刷新权限
现在我执行的是:
create user ‘chongli‘@‘%‘ IDENTIFIED BY ‘chongli‘; #创建用户 执行不成功
所以我换成了
create user ‘chongli‘@‘127.0.0.1‘ IDENTIFIED BY ‘chongli‘; #执行成功 %与127.0.0.1差别导致问题出现
GRANT REPLICATION SLAVE ON *.* TO ‘chongli‘@‘%‘; #分配权限
flush privileges; #刷新权限
验证该错误方法:
登录主库:查看复制用户的权限
技术图片
技术图片
当权限显示为REPLICATION是方才正确,‘chongli‘@‘127.0.0.1‘权限不对
解决:修改权限
技术图片
四、主从同步搭建
1.登录主库
mysql -uroot -p密码 -P3306
2.登录从库
mysql -uroot -p密码 -P3307
3.查看主库从库状态
show master status; #登录主库 查看主库master的状态
技术图片
show slave status\G #登录从库 查看从库slave的状态
技术图片
4.主库master中创建一个用户与从库slave同步
create user ‘chongli‘@‘127.0.0.1‘ IDENTIFIED BY ‘chongli‘; #创建用户
GRANT REPLICATION SLAVE ON *.* TO ‘chongli‘@‘127.0.0.1‘; #分配权限
flush privileges; #刷新权限
5.切换到从库,将主库与从库通过新创建的用户联系起来
change master to master_host=‘127.0.0.1‘,master_port=3306,master_user=‘chongli‘,master_password=‘chongli‘,master_log_file=‘backup-data.000015‘,master_log_pos=154; #master_log_file 对应3中主库状态的File master_log_pos对应3中主库状态的Position
6.主表加锁:为了防止我们复制数据到从库的时候,主表数据库study中的数据发生更新(这一步我省略了:本地搭建学着玩的)此处更好是只锁study数据库,因为我们只是同步了study,而不是全局锁
flush tables with read lock; #锁定数据库
这个命令是全局读锁定,它会给主服务器中的所有数据库都加上读锁
read lock(读锁):也叫共享锁,允许所有的读操作,但阻塞写操作,即所有连接只可以读数据,但不允许写数据。
write lock(写锁):也叫排它锁、独占锁,只允许当前连接的读和写,不允许其他并发的读操作和写操作。
锁定主服务器的数据库后,我们在从服务器中,也创建一个数据库test,并将所有的表(包括表结构和表数据)都导入。
然后,我们执行下面的命令,解锁:
unlock tables; #解锁
7.从库中开启同步
start slave; #开启同步
技术图片
8.查看从库状态,验证是否开启主从同步
技术图片
Slave_IO_Running与Slave_SQL_Running都为Yes证明搭建同步成功,也可以去主库增删改数据验证从库效果。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4