下面是同一台电脑下 MySQL主从数据库的搭建方法:
my.ini文件
[client]
no-beep
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
port=3306
server_id = 1 #主库和从库需要不一致,配一个唯一的ID编号,1至32。 手动设定
log-bin=mysql-bin #二进制文件存放路径,存放在根目录data
basedir="D:\mysql-5.7.20-win32"
datadir="D:\mysql-5.7.20-win32\data\"
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
max_connections=200
query_cache_size= 64M
key_buffer_size=8M
innodb_log_buffer_size= 8M
innodb_buffer_pool_size = 512M
innodb_log_file_size= 256M
join_buffer_size=128M
sort_buffer_size=2M
read_rnd_buffer_size=2M
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
[WinMySQLAdmin]
Server =D:\mysql-5.7.20-win32\bin\mysqladmin.exe
一、安装 MySQL 主库和 mysqlslave 从库
安装 MySQL 主库
cmd进入bin下执行:mysqld -install
再执行: mysqld --initialize-insecure --user=mysql //生成data目录
安装mysqlslave从库
复制一份D:\mysql-5.7.20-win32,并命名为D:\mysql-5.7.20-win32-slave
新建一个mysqlslave服务,防止和刚安装的mysql服务冲突
sc create mysqlslave binPath= "D:\mysql-5.7.20-win32-slave\bin\mysqld.exe" TYPE= "own" start= "auto" TAG= "no" DisplayName= "mysqlslave"
删除D:\mysql-5.7.20-win32-slave\data下的auto.cnf
二、配置主库
1.停止主mysql:net stop mysql
2.主库里my.ini文件
port = 3306
server_id=1 #主库和从库需要不一致
log-bin=mysql-bin #二进制文件存放路径,存放在根目录data
3.保存,重启主库,net start mysql
4.在主库中建立一个用户(专门用给从库连接的,注意这是在主库里面建立的)
mysql -uroot -p //此处如果是第一次安装不需要输入密码就可以直接登录(进入后请执行update mysql.user set authentication_string=password('123456') where user='root' and host = 'localhost'; 设置主库root的密码,重启主库后生效)
grant replication slave,reload,super on *.* to myslave@localhost identified by '123456'; //myslave是用户名,myslave密码是用户对应的密码,localhost也可以写ip
5.刷新权限 flush privileges;
6.show master status \G; # 找到 File 和 Position 的值记录下来
三、配置从库
1.新启一个cmd,进入从库的bin目录,停止从库 net stop mysqlslave
2.拷贝主库的my.ini到从库,并修改从库的my.ini
port = 3307
server_id=2 #主库和从库需要不一致
basedir="D:\mysql-5.7.20-win32-slave"
datadir="D:\mysql-5.7.20-win32-slave\data\"
3.重启从库, net start mysqlslave并用mysql -uroot -p后输入密码(同理第一次不用输入密码,再执行update mysql.user set authentication_string=password('123456') where user='root' and host = 'localhost'; 设置从库root的密码,重启从库后生效),进行root登录
4.在从库执行
change master to master_host='127.0.0.1',master_user='myslave',master_password='123456', master_log_file='mysql-bin.000001',master_log_pos=1282; //注意master_log_file和master_log_pos为上面记录主库的对应值
//如果你的主库还有是其他端口的话,master_port=端口号
5.从库 执行 stop slave; 再执行 start slave;
6.从库查看 :show slave status \G;
7.如果看到了Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Last_IO_Errno: 0
Last_IO_Error:
说明搭建成功了!