mysql优化-主从复制

windows:mysql主
linux:mysql从

安装windows版mysql:

如果之前计算机中安装过Mysql,要重新再安装则需要:先卸载再安装
先卸载:
通过电脑自带卸载工具卸载Mysql(电脑管家也可以)
删除一个mysql缓存文件C:\ProgramData\MySQL
删除注册表regedit中所有mysql相关配置
--重启计算机

安装MYSQL:
安装时,如果出现未响应:则重新打开D:\MySQL\MySQLServer5.5\bin\MySQLInstanceConfig.exe

图形化客户端:SQLyog,Navicat

如果要远程连接数据库,则需要授权远程访问。
授权远程访问:(A->B,则再B计算机的Mysql中执行以下命令)
GRANTALLPRIVILEGESON.TO'root'@'%'IDENTIFIEDBY'root'WITHGRANTOPTION;
FLUSHPRIVILEGES;

如果仍然报错:可能是防火墙没关闭:在B关闭防火墙serviceiptablesstop

实现主从同步(主从复制):

1.master将改变的数记录在本地的二进制日志中(binarylog);该过程称之为:二进制日志件事
2.slave将master的binarylog拷贝到自己的relaylog(中继日志文件)中
3.中继日志事件,将数据读取到自己的数据库之中
MYSQL主从复制是异步的,串行化的,有延迟

master:slave=1:n

配置:
windows(mysql:my.ini)
linux(mysql:my.cnf)

配置前,为了无误,先将权限(远程访问)、防火墙等处理:
关闭windows/linux防火墙:windows:右键“网络”,linux:serviceiptablesstop
Mysql允许远程连接(windowos/linux):
GRANTALLPRIVILEGESON.TO'root'@'%'IDENTIFIEDBY'root'WITHGRANTOPTION;
FLUSHPRIVILEGES;

主机(以下代码和操作全部在主机windows中操作):
my.ini
[mysqld]

id

server-id=1

二进制日志文件(注意是/不是\)

log-bin="D:/MySQL/MySQLServer5.5/data/mysql-bin"

错误记录文件

log-error="D:/MySQL/MySQLServer5.5/data/mysql-error"

主从同步时忽略的数据库

binlog-ignore-db=mysql

(可选)指定主从同步时,同步哪些数据库

binlog-do-db=test

windows中的数据库授权哪台计算机中的数据库是自己的从数据库:
GRANTREPLICATIONslave,reload,superON.TO'root'@'192.168.2.%'IDENTIFIEDBY'root';
flushprivileges;

查看主数据库的状态(每次在左主从同步前,需要观察主机状态的最新值)
showmasterstatus;(mysql-bin.000001、107)

从机(以下代码和操作全部在从机linux中操作):

my.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
replicate-do-db=test

linux中的数据授权哪台计算机中的数控是自己的主计算机
CHANGEMASTERTO
MASTER_HOST='192.168.2.2',
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_PORT=3306,
master_log_file='mysql-bin.000001',
master_log_pos=107;
如果报错:Thisoperationcannotbeperformedwitharunningslave;runSTOPSLAVEfirst
解决:STOPSLAVE;再次执行上条授权语句

开启主从同步:
从机linux:
startslave;
检验showslavestatus\G主要观察:Slave_IO_Running和Slave_SQL_Running,确保二者都是yes;如果不都是yes,则看下方的Last_IO_Error。
本次通过Last_IO_Error发现错误的原因是主从使用了相同的server-id,检查:在主从中分别查看serverid:showvariableslike'server_id';
可以发现,在Linux中的my.cnf中设置了server-id=2,但实际执行时确实server-id=1,原因:可能是linux版Mysql的一个bug,也可能是windows和Linux版本不一致造成的兼容性问题。
解决改bug:setglobalserver_id=2;

stopslave;
setglobalserver_id=2;
startslave;
showslavestatus\G

演示:
主windows=>从

windows:
将表,插入数据
观察从数据库中该表的数据

你可能感兴趣的:(mysql优化-主从复制)