本地搭载mysql主从复制

最好两个mysql一致 如果 不一样可能会报错

 

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-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

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

    

跳转到mysql的bin目录:

#安装一个mysql服务

   mysqld install

ps:如果安装过MYSQL服务,可以使用下边命令安装了一个mysql2的服务:

mysqld install mysql2 --defaults-file="c:\wamp\bin\mysql2\mysql5.6.17\my.ini"  

--defaults-file参数用来制定配置文件位置防止多个服务冲突

    1. 启动mysql服务。

 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" DisplayName= "mysql2server SERVICES"

 

 

 

  • 配置Mysql主从复制
    1. 添加一个mysql主从复制需要的账号

grant 权限 on 数据库对象 to 用户

 

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*

TO mysql_backup@'%'

IDENTIFIED BY '123456';

 

flush privileges;

    1. 配置主服务器

mysql配置文件加入:

server-id=1

log-bin=mysql-bin

 

 

server-id:为主服务器A的ID值

log-bin:二进制变更日值

 

重启master,运行SHOW MASTER STATUS,输出如下:

 

    1. 配置从服务器

 

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

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_user = 'mysql_backup',

 master_password = '123456',

 master_log_file = 'mysql-bin.000001',

 master_log_pos = 3696;

 

 

#启动从库

Start slave

 

#停止从库

Stop slave

 

#查看从库状态

Show slave status

 

 

 

log_bin
设置此参数表示启用binlog功能,并指定路径名称
log_bin_index
设置此参数是指定二进制索引文件的路径与名称
binlog_do_db
此参数表示只记录指定数据库的二进制日志
binlog_ignore_db
此参数表示不记录指定的数据库的二进制日志
max_binlog_cache_size
此参数表示binlog使用的内存最大的尺寸
binlog_cache_size
此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试
       binlog_cache_use:使用二进制日志缓存的事务数量
       binlog_cache_disk_use:使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量


max_binlog_size
Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束

sync_binlog
这个参数直接影响mysql的性能和完整性

sync_binlog=0
当事务提交后,Mysql仅仅是将binlog_cache中的数据写入Binlog文件,但不执行fsync之类的磁盘        同步指令通知文件系统将缓存刷新到磁盘,而让Filesystem自行决定什么时候来做同步,这个是性能最好的。

sync_binlog=n,在进行n次事务提交以后,Mysql将执行一次fsync之类的磁盘同步指令,同志文件系统将Binlog文件缓存刷新到磁盘。

Mysql中默认的设置是sync_binlog=0,即不作任何强制性的磁盘刷新指令,这时性能是最好的,但风险也是最大的。一旦系统绷Crash,在文件系统缓存中的所有Binlog信息都会丢失


binlog的删除
binlog的删除可以手工删除或自动删除

自动删除binlog
通过binlog参数(expire_logs_days )来实现mysql自动删除binlog
mysql> show binary logs;
mysql> show variables like 'expire_logs_days';
mysql> set global expire_logs_days=3;

手工删除binlog
mysql> reset master;   //删除master的binlog
mysql> reset slave;    //删除slave的中继日志
mysql> purge master logs before '2012-03-30 17:20:00';  //删除指定日期以前的日志索引中binlog日志文件
mysql> purge master logs to 'binlog.000002';   //删除指定日志文件的日志索引中binlog日志文件
或者直接用操作系统命令直接删除

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值