1、解压mysql免安装版压缩包,我用的版本mysql-5.6.25,我的路径:
E:\mysql\mysql_master
E:\mysql\mysql_slave
2、安装mysql主服务
2.0 在E:\mysql\mysql_master目录下修改my-default.ini文件为my.ini,并且将文件内容改为以下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
server-id=1
binlog-do-db=settle_db_0
binlog-do-db=settle_db_1
binlog-do-db=settle_db_2
binlog-ignore-db=settle_config_db
log-bin=mysql-bin
#设置3307端口
port = 3307
# 设置mysql的安装目录
basedir=E:\mysql\mysql_master
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql\mysql_master\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#跳过数据库权限验证
skip-grant-tables
注:server-id 可自定义,但不能与系统安装的其他mysql服务器的设置相同
binlog-do-db为需要设置主从配置的数据库,binlog-ignore-db为不需要设置主从配置的数据库
port 可自定义,但不能与系统安装的其他mysql服务器的设置相同,mysql默认端口号为3306
2.1 运行cmd窗口,输入命令 cd /d E:\mysql\mysql_master\bin(此为mysql主库bin目录)
运行命令 mysqld --install mysql_master 提示“Service successfully installed”,则说明mysql服务安装成功
注:此处mysql_master 为自定义服务名,直接运行mysqld --install则默认服务名为mysql,出现The service already exists 说明和以前安装的mysql服务名重名,修改服务名或者删除之前的服务,查看服务 sc query 服务名 删除服务命令 sc delete 服务名
2.2 启动主服务器服务,运行命令 net start mysql_master
连接mysql主服务器,运行命令 mysql -uroot -p -P3307 如提示输入密码,直接回车即可,如回车后提示密码错误则可能是my.ini文件未配置skip-grant-tables
注:此处mysql_master 为自定义服务名 3307为自定义端口号
2.3 创建新用户,运行命令 create user 'masterUser'@'127.0.0.1' identified by 'pw123456';
注:masterUser为用户名,pw123456为密码,如果MYSQL 创建用户报1290错误,则需要在my.ini文件添加配置skip-grant-tables ,运行命令flush privileges即可,例:mysql> flush privileges;
2.4 配置主从复制的权限,运行命令 grant replication slave on *.* to 'masterUser'@'127.0.0.1' identified by 'pw123456';
查看主服务master的状态,运行命令 show master status; ,记录下file和position的值,后续配置从服务器时需要用到。
注:show master status 时没有数据显示,运行命令show variables like 'log_bin' ;查看是否开启日志,没有开启则需要在my.ini文件添加配置log-bin=mysql-bin,重启服务。
3、安装mysql从服务
3.0 在E:\mysql\mysql_slave目录下修改my-default.ini文件为my.ini,并且将文件内容改为以下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
server-id=2
#设置3308端口
port = 3308
# 设置mysql的安装目录
basedir=E:\mysql\mysql_slave
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql\mysql_slave\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
skip-grant-tables
注:server-id不能与主服务器的设置相同
port端口不能与主服务器的设置相同
从服务器不需要配置binlog-do-db
3.1 运行cmd窗口,输入命令 cd /d E:\mysql\mysql_slave\bin(此为mysql从库bin目录)
运行命令 mysqld --install mysql_slave 提示“Service successfully installed”,则说明mysql从服务安装成功
注:或者运行命令 mysqld install mysql_slave --defaults-file="E:\mysql\mysql_slave\my.ini"
3.2 启动从服务器服务,运行命令 net start mysql_slave
连接mysql从服务器,运行命令 mysql -uroot -p -P3308 提示密码,直接回车即可。
3.3 从库上配置主从同步,输入命令:
change master to master_host='127.0.0.1',master_port=3307,master_user='masterUser',master_password='pw123456',master_log_file='mysql-bin.000010',master_log_pos=120;
注:master_log_file和master_log_pos为主库show master status命令展示的file和position。
3.4 从库上开启主从同步功能,输入命令 start slave;
查看slave状态,输入命令 show slave status;
此处的Slave_IO_Running/Slave_SQL_Running的值都是yes表示主从配置成功,包括建表语句也能同步到从库。但是改变从服务器的数据,主服务器并不会同步更新,除非两个MySQL服务器设置为互为主从。
常用命令:
退出mysql: exit;/quit;
用户登陆: mysql -umasterUser -ppw123456 -h127.0.0.1 -P3307
刷新权限: flush privileges;
修改密码: set password for root@localhost = password('pw123456');
修改密码: update user set password=PASSWORD('pw123456') where User='root';
修改密码: alter user 'root'@'localhost' identified by 'pw123456';
常见问题:
同步存在问题一般需要查看E:\mysql\mysql_slave\data里面以err为结尾的日志,查找具体原因。
以下列举常见问题及解决方案:
如果未设置server-id的值会导致Slave_IO_Running为no,则需要配置server-id,重启服务。然后在从库上配置主从同步,输入命令:
change master to master_host='127.0.0.1',master_port=3307,master_user='masterUser',master_password='pw123456',master_log_file='mysql-bin.000010',master_log_pos=120;
如果是Slave_SQL_Running:no
输入命令: show master status
输入命令: show slave status
看一下master_log_file名称是否一致,不一致则先执行stop slave;重新执行change命令,再start slave;或者查看是否开启了binlog: show variables like '%log_bin%'; 没有开启log_bin的值是OFF,开启之后是ON,未开启则配置log-bin=mysql-bin
以上操作如未生效可以尝试重启mysql服务。