在windows环境下mysql搭建主从|主主

时间:2021-04-09 20:34:28

在windows环境下搭建主从|主主

如果原来有mysql
可以先把原数据库进行备份防止数据丢失

    在cmd界面进入到mysql文件的bin目录
    执行以下语句,导出sql语句

    mysqldump.exe -h localhost -uroot -p affairs > D:/shop.sql

1)需要配置环境变量,并停用以前的mysql环境变量

2)复制新的mysql中的my-default.ini为my.ini作为配置文件

3)进入新的上一步的my.ini添加配置

  • 在[mysqld]下配置

      #端口号
     port 3307
    
     #安装目录
     basedir=D:\mysql_server_5.6.24
    
    #运行目录    
    datadir=D:\mysql_server_5.6.24\data
    
    #日志配置  如果配置此项需要事先将目录建好
    log-error=D:\MysqlServer5.6\logs\error.log
    log=D:\MysqlServer5.6\logs\mysql.log
    long_query_time=2
    log-slow-queries=D:\MysqlServer5.6\logs\slowquery.log
    

    以管理员权限打开cmd
    如果之前打开过cmd需要重新关闭重新打开
    跳转到mysql的bin目录 安装

     mysqld -install (服务器上只有一个mysql的情况)
    

    如果有mysql,需要执行以下命令指定配置文件目录

    D:\Mysql_Server_5.6.24\bin>mysqld.exe install mysql2 --defaults-file="D:\Mysql_Server_5.6.24\my.ini"
    
    如果成功会有以下提示:
    Service successfully installed.
    

然后重启新的mysql2

D:\Mysql_Server_5.6.24\bin>net start mysql2

net start mysql   启动mysql服务

net stop mysql   停止mysql服务

(此配置可以不添加)Windows 添加服务: [ 防止2个mysql服务冲突 ]

( 安装路径)
sc create mysql2server binPath= "E:\MysqlServer5.6\bin\mysqld.exe"
(是否自动开启)
 TYPE= "own" start= "auto"

 TAG= "no" Display   

 Name= "mysql2server SERVICES

配置主从

1,添加一个mysql主从复制需要的用户账号
在数据库中 新建查询中使用

  GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* 
   TO mysql_backup@'%'
   IDENTIFIED BY '123456';

刷新权限

  flush privileges;

删除从服务器的用户只留下一个用户root
刷新权限

  flush privileges;

2,配置主服务器

  mysql配置文件加入:

  server-id=1(必须要有   为服务器A的id)

  log-bin=mysql-bin(二进制便跟日志)

  binlog_ignore_db=mysql     # mysql这个库不同步

  binlog_do_db=test               # 要同步的数据库(可不填)

重启master,reset master 慎用:会清空所有的日志文件
运行

SHOW MASTER STATUS 加\G 会输出以下格式

输出如下:
在windows环境下mysql搭建主从|主主

3,配置从服务器在从服务器的mysql配置中

   port             = 3307           
   log_bin          = mysql-bin

   server_id        = 2(服务器B的id)

   relay_log        = mysql-relay-bin(中继日志)

   read_only        = 1        (设置权限  只有查的权限)

在数据库中 从服务器新建查询

停止从库

  stop slave status

连接主库

  CHANGE MASTER TO master_host = '127.0.0.1',

   master_user = 'mysql_backup',(账号)

   master_password = '123456',(密码)

   master_log_file = 'mysql-bin.000001',   

   master_log_pos = 120 (这两个可以再主库中  执行 show master  status 看到)

启动从库

start salve

查看从库状态

 show slave status

如果io线程 与 sql线程 都是yes 就完成了

配置主主

在你上一次搭建的端口号为3307的 mysql 服务器 与上次同样方式添加一个用户账户

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*  TO mysql_backup@'%'
IDENTIFIED BY '123456';

修改配置文件

MASTER1:

[mysqld]
# for repl
server-id = 1
log-bin = mysql-bin
auto-increment-increment= 2 # 应设为整个结构中服务器的总数
auto-increment-offset = 1  # 设定数据库中自动增长的起点,避免两台服务
器数据同步时出现主键冲突

MASTER2:

[mysqld]
# for repl
server-id = 2
log-bin = mysql-bin
auto-increment-increment= 2
auto-increment-offset = 2

配置主库

master1上指定master2为主

 CHANGE MASTER TO master_host = '192.168.1.201',
 master_user = 'mysql_backup',
 master_password = '123456',
 master_log_file = 'mysql-bin.000001',
 master_log_pos = 106;

mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

master2上指定master1为主:

 CHANGE MASTER TO master_host = '192.168.1.200',
 master_user = 'mysql_backup',
 master_password = '123456',
 master_log_file = 'mysql-bin.000001',
 master_log_pos = 106;
Query OK, 0 rows affected (0.18 sec)

mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

如果已经配置了主从再在原来的从服务器上在配置主主,只需要在从服务器上执行上面的一步,原主服务器无需再行配置为主;

其他步骤和上面的配置主从一样只不过这次是从服务器为主服务器配置方式一样。
如果两个mysql版本冲突会出现1236错误,只需在高版本服务器上增加如下:

binlog_checksum=none  #不检测日志文件格式mysql

查看从库状态

 show slave status

如果io线程 与 sql线程 都是yes 就完成了

测试主主复制

实验1:

启动两个服务,在任一mysql上进行操作,在另一mysql上均能体现出来。

注: MySQL的主主复制实际上就是双向的主从复制。