首先要把Mysql安装好,不演示了
我把原来数据库的数据先打包好了,所以mysql文件夹下的data就可以删除了
- 关闭并删除mysql服务(删除我不确定是否必要)
用管理员权限打开cmd,进入mysql安装目录
输入net stop mysql
,sc delete mysql
,cmd会显示指定的服务已标记为删除 - 将mysql安装文件夹复制到另一个地方,把两个mysql文件夹里面的data文件夹都删除了
- 我安装的mysql版本没有my.ini文件,所以在mysql的根目录新建文档,然后改成my.ini
第一段是主mysql的配置内容
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
innodb_buffer_pool_size = 16M
log-bin=mysql-bin
basedir = E:\mysql-8.0.21-winx64
datadir = E:\mysql-8.0.21-winx64\data
port = 3306
server_id = 1
join_buffer_size = 8M
sort_buffer_size = 8M
read_rnd_buffer_size = 16M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
然后是从mysql的配置内容
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
innodb_buffer_pool_size = 16M
log-bin=mysql-bin
basedir = E:\mysql-8.0.21-winx64 - slave
datadir = E:\mysql-8.0.21-winx64 - slave\data
port = 3307
server_id = 2
join_buffer_size = 8M
sort_buffer_size = 8M
read_rnd_buffer_size = 16M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
注意两个配置文件中 port,server_id,basedir,datadir的区别
主mysql服务的端口是3306,从mysql服务的端口是3307
server_id 一定不能相同
basedir和datadir路径要与自己的路径一致
- 通过管理员cmd分别进入两个mysql文件夹里面,执行
mysqld --initialize-insecure
来初始化data文件夹,
在主文件夹中执行命令mysqld --install "Mysql80" --defaults-file="E:\mysql-8.0.21-winx64\my.ini"
,然后启动服务net start mysql80
服务就会成功启动了
在从文件夹中执行命令mysqld --install "Mysql80slave" --defaults-file="E:\mysql-8.0.21-winx64 - slave\my.ini"
,
然后启动服务net start mysql80slave
,如果显示服务无法启动,而且没有任何错误,就把data文件夹都删了,从第四步再来
- 重新启动后mysql没有密码,在8.0的mysql中输入
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
来重置密码 - 进入主mysql,新建用户
CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';
再flush privileges;
刷新表,都成功的话依次输入grant REPLICATION CLIENT ON *.* to 'slave'@'%' ;
,grant REPLICATION SLAVE ON *.* to 'slave'@'%' ;
给slave用户权限
-
在主mysql中输入
show master status;
-
在打开的从mysql文件夹的cmd命令行中输入
mysql -uroot -P3307 -p
,一开始也是没有密码的,另起一个cmd输入ipconfig
返回刚才的cmd,输入change master to master_host='192.168.1.121',master_user='slave',master_password='slave',master_log_file='mysql-bin.000003',master_log_pos=0;
其中master_host里面的地址是刚才ipconfig中出现的ipv4地址,master_log_file是第7步中出现的File -
现在差不多就成了,在从mysqlcmd中输入
show slave status\G;
看到那两个Yes就好了,然后就可以测试了,在主mysql中添加修改就会在从mysql中复制了
如果有什么问题的话,请指出谢谢大家