win同时安装两台MySql进程,Mysql主从复制搭建、主主复制文档

来源:互联网 发布:java遍历map哪个速度快 编辑:程序博客网 时间:2024/06/06 09:14

Mysql主从复制搭建文档


一、安装Mysql
1.本地首先需要搭建一套mysql,可以使用集成环境。
2.需要单独在搭建mysql,用来做主从复制
3.解压安装包 [mysql-5.6.24-win32.1432006610.zip]
4.配置 mysql环境变量 (  修改PATH,添加 D:\MysqlServer5.6\bin )  
5. D:\MysqlServer5.6 目录下新建my.ini 配置文件
[mysqld]
#mysqld 配置
port=3307
basedir=D:\Mysql_Server_5.6.24

datadir=D:\Mysql_Server_5.6.24\data


# 二进制日志

log-bin=mysql-bin


#日志配置
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

6.使用管理员打开CMD窗口。

跳转到mysql的bin目录:


mysqld -install
    
7.启动mysql服务。
     net start mysql   启动mysql服务
    Net stop mysql   停止mysql服务
    

Windows  添加服务:  [ 防止2个mysql服务冲突 ]

注意:binPath= 后面有空格

sc create mysql2server binPath= "E:\MySQL\mysql-5.6.24-win32\bin\mysqld.exe" TYPE= "own" start= "auto" TAG= "no" DisplayName= "mysql2server SERVICES"


命令示意:创建一个服务,守护当前MySql进程,否则会和其它MySql混杂一块

sc create 创建服务
mysql2server 显示的服务名
mysql2server SERVICES 后台显示


二、配置Mysql主从复制
1.添加一个mysql主从复制需要的账号(MySql命令中间的回车代表命令结束)
grant 权限 on 数据库对象 to 用户

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


//刷新权限

flush privileges;
2.配置主服务器
mysql配置文件加入:
server-id=1
log-bin=mysql-bin


server-id:为主服务器A的ID值
log-bin:二进制变更日值

重启master,运行SHOW MASTER STATUS,输出如下:
    mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      308 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化


3.配置从服务器

Slave的配置与master类似,你同样需要重启slave的MySQL。如下:

basedir = E:\MySQL\mysql-5.6.24-win32 //MySql目录
datadir = E:\MySQL\mysql-5.6.24-win32\data //MySql\data 目录

log_bin           = mysql-bin //从数据库不用写
server_id         = 2 //必须唯一
relay_log         = mysql-relay-bin
log_slave_updates = 1
read_only         = 1
server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。


#链接主库
CHANGE MASTER TO master_host = '127.0.0.1',
 master_port = 3307, //主库端口号,默认3306不用写
 master_user = 'mysql2server',
 master_password = '123456',
 master_log_file = 'mysql-bin.000001',//查看主库状态获得,重启一次 变更一次(SHOW MASTER STATUS)
 master_log_pos = 0;//查看主机状态获得


#启动从库
Start slave

#停止从库
Stop slave

#查看从库状态

Show slave status

主主复制 其实就是护卫主从,在原从mysql 生成二进制流日志,别给用户分配权限。。。。

在主主复制的时候,如果版本不同,会报1236的错,这个错是数据同步不完全的意思,是高版本的二进制日志不能被低版本的MySql所理解。

纠措有两种:

1、跟换版本相同的数据库

2、因为MySql复制的时候默认是不自动检测版本是否相同,因此在高版本的配置项中加入

binlog-checksum=none

这段配置,只要两MySql版本相差不多,基本可以执行


0 0
原创粉丝点击