1、mysql数据库2套,这里我使用绿色版的mysql,版本为---【等会查吧】;
2、由于一台机器只能同时开启一个Mysql,所以这里我加了个虚拟机,虚拟机一个Mysql,物理机一个Mysql【ps:其实有单机多开的,但是我懒得处理了,反正是测试对吧】;
3、将物理机与虚拟机网络打通,ping对方能ping通那种;
4、将Mysql的端口打通,也就是3306端口,在防火墙ing;
5、确保Mysql可以通过外部访问,我测试之初就出问题了,用户那块居然只监听localhost,没有全网可用,尴尬的一匹;
1、首先在2个电脑上分别开启数据库:分别名为主Mysql和从Mysql;
2、在主Mysql上创建一个用户'czk',并允许其他服务器可以通过远程访问数据,通过该用户读取二进制日志,实现数据同步。
a、首先在主Mysql命令控制台上面创建ltkj用户,具体的sql为:
create user czk;
b、为这个用户赋予相应的权限,这里我赋值的是最大的权限。也就是该用户可以从任何的ip地址登陆访问数据库,可以操作所有的数据库表。具体的sql为:
GRANT ALL PRIVILEGES ON *.* TO czk@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
c1.FLUSH PRIVILEGES;这个命令必须填写,否则上面设置的用户权限失效。
c2.ip地址是可以设置范围的。例如:GRANT REPLICATION SLAVE ON *.* TO 'czk'@'192.168.1.%' IDENTIFIED BY '123456';
c4.用户的权限也是可以设置的。具体的命令大家可以自己去学习,我这里就不多说了。
如果不设置用户权限的话,本地可以连接的上mysql服务器,局域网或者外网是连接不上,会显示连接被拒绝或者用户没有这个权限。除此之外权限还可以精确到某个数据库,连接者的IP地址区间,设置是某个数据的操作问题等等都可以进行设置。我这边设置的是leemeea这个用户具备所有用户数据库的权限,所有的ip地址都可以通过machao这个用户来连接主数据库。
d、找到MySQL安装文件夹修改my.ini文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。
#开启主从复制,主库的配置
log-bin= mysql3306-bin
#指定主库serverid
server-id=101
# 二进制文件的格式
binlog_format=mixed
#指定同步的数据库,如果不指定则同步全部数据库
#binlog-do-db=(数据库名称)
e、查看日志
SHOW MASTER STATUS;
a、找到MySQL安装文件夹修改my.ini文件,在文件的最下面增加下面几行代码
#指定serverid,只要不重复即可,从库也只有这一个配置,其他都在SQL语句中操作
server-id=102
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
change master to
master_host='192.168.1.104', //主服务器Ip地址
master_port=3306,//主服务器端口号
master_user='czk',//主服务器用户名
master_password='123456', //主服务器用户密码
master_log_file='mysql3306-bin.000001',//主服务器产生的日志要和主服务器所配置的相互对应如下如所示的file对应
master_log_pos=107;//要和主服务器所配置的相互对应如下如所示的Position对应(经过测试发现如果是一样的只能同步一次,这里也可以改为0,0是可以每次都同步成功,避免后续麻烦)
show slave status\G
如果出现Slave_IO_Running: No或Slave_SQL_Running: NO,需要重做以上对从数据库的相应设置;