前边有过先容这里不再重复,安装完成往后可能会碰着安装往后不能启动的问题。
办理办法:
图1 mysql安装多版本 不能启动

我利用了一个mysql5.7,还有2个mysql8进行测试。
2、环形主从
A->B->C->D->A
也便是每个做事器即是主数据库,又是从数据库,形成环状,首尾相接。
优点:可以方便改换主机,当A主数据库出了问题,可以把1号从数据库直接换为主数据库;
缺陷:当个中一个从数据库出了问题,后边的链条就断开了,不能做到同步;
3、发散式主从
A->B,A->C,A->D
只有一个主数据库(A),其他的数据库(B、C、D)都是A的从数据库。
4、主从配置
1)主数据库配置(A)my.ini
[mysqld]server-id=1 log-bin=D:\mysql2\log\mysql-bin
解释:
server-id,相称于门牌,每个数据库是唯一的,不要发生重复;log-bin日志的存放位置,我这里是指定了位置;如果是双向同步,A即是主也是从数据库,如下配置
[mysqld]server-id=1log-bin=D:\mysql2\log\mysql-bin replicate-wild-do-table=master.np_web_copy#高下2个是有空行的,测试,没有空行的时候同步失落败了,#根据自己须要来写,如果同步失落败 又不提示缺点,可以把2个加上空行试试replicate-wild-do-table=master.np_web_tags#replicate_wild_ignore_table= 忽略的表
解释:
replicate-wild-do-table要同步的表;replicate_wild_ignore_table同步的时候忽略的表;如果同步的表比较少,可以利用replicate-wild-do-table指定要同步的,反之如果同步的表格比较多,则该当是指定不同步的表;可以看到我同步的是2个表,2个replicate-wild-do-table之间加了空缺行;配置完成往后数据库做事要重启;在测试同步的时候开始replicate-wild-do-table是直接没有空缺行写的,但是不提示缺点,也不同步数据,后来加了空缺行就可以同步了。
2)从数据库(B)配置my.ini
和上边主数据库配置是一样的,变动下server-id,log-bin就可以了。
server-id=3log-bin=D:\mysql-8.0.27-winx64\log\master-binreplicate-wild-do-table=master.np_web_copyreplicate-wild-do-table=master.np_web_tags
解释:
如果只是作为从库,log-bin不须要配置;
5、上岸主数据库,创建用户用于主从同步
1)上岸mysql
进入数据库安装目录bin文件夹,地址栏输入cmd
msyql -u root -p -P 3308
由于是本地安装多个数据库,肯定会涉及到利用不同端口
解释:root是用户名,p 后边是密码, 大写的P后边是端口
2)创建用户(主从同步)
mysql8以前的版本
grant replication slave on . to 'slave'@'127.0.0.1' identified by '123456';
mysql8
1、CREATE USER 'slave'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '123456';2、grant replication slave on . to 'slave'@'127.0.0.1';
flush privileges;
解释:
'slave'@'127.0.0.1'个中127.0.0.1从做事器IP,slave用户名,123456是密码,根据自己须要设置;添加完成用户往后要刷新权限flush privileges;6、cmd查看主数据库状态
1)锁表,防止在配置的时候日志发生改变,先锁起来,配置完成从数据库往后再解锁
flush tables with read lock;
2)查看主数据库状态
show master status;
图2 master状态
这里可以查看到file(slave-bin.000008),Position(156);每个数据库这里都可能是不同的,根据自己电脑显示的信息记录下来;7、上岸从数据库
1)如果以前有过配置,须要先停滞同步。
stop slave;
2)设置输入以下代码
CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_PORT=3308,MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='slave-bin.000008',MASTER_LOG_POS=156;
解释:
127.0.0.1主理事器的IP;3308是端口;slave是添加的用户账号;123456用户密码;slave-bin.000008是查看主数据库状态得到的file;156同5一样是查看状态得到的Position;3)启动同步
start slave;
4)查看状态
show slave status \G#如果只是show slave status;显示会很乱,利用上边的指令显示的会更加清晰一些;
图3 主从同步配置成功
涌现图3显示解释配置成功
5)解锁主数据库
unlock tables;
问题1:Slave_IO_Running为no
查看change master to后边的参数是否精确;
问题2:Slave_SQL_Running: No
开始配置显示yes ,但是操作数据库往后显示为No,这是由于对从数据库进行了写操作;
同步过程中可能涌现的问题:
1049 ,检讨从数据库是否存在,例如要同步的是master数据库,从库中也要存在master;1032,我查看日志是主库删除信息的时候,从库不存在该信息;22.编码问题,当主库是mysql8,从库是5.7的时候涌现了该问题;以上2、3实在也不算是缺点,对程序的实行没有影响,可以忽略跳过。
打开从数据库mysql.ini添加指令:
slave-skip-errors=22,1032
把稳:如果数据库只是从数据库,不要对该数据库进行写操作,否则会涌现Slave_SQL_Running: No为no的情形;
8、双向同步,数据库即做主库也做从库
须要重复以上步骤:
不必管已经设置好的主从,把B做事器作为主库,A做事器作为从库,重新设置一下主从就可以了。
9、查看日志
当同步失落败的时候,查看从库的状态,
show slave status \G
得到缺点信息
图4 查看状态得到缺点信息
根据缺点提示,去查看对应的日志文件,
利用mysqlbinlog查看日志,进入bin目录
mysqlbinlog --stop-position=23277 ../log/slave-bin.000009 | mysql -u root -p -P 3308
总结:
主从数据库同步之前要确保数据库完备同等,包括数据库名称和表中存储的数据;如果利用低版本的数据库和高版本的数据库主从同步,最好是低版本的作为主库;