mysql主从(Master-Master)服务搭建详解


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服务。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值