Linux下Mysql主从复制(从库是MariaDB)
排版不易,希望能帮助到大家
一、准备2台服务器
ip:120.168.0.1(主)、120.168.0.2(从)
二、配置文件
1. Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件为mysql.ini)
2.主库
binlog-ignore-db=mysql #不参与主从的数据库名,不参与主从复制的数据库名mysql
server-id=1 #服务器的标识 要和从服务器不一样
log-bin=mysql-bin #注意:二进制日志必须开启,因为数据的同步实质上就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍。
replicate-do-db=oa_system #是你需要复制的数据库名称,如果有多个就用逗号“,”分开;或者分行写
3从库
server-id=2 #服务器的标识唯一,设置要进行或不要进行主从复制的数据库名,要和主服务器不一样
log-bin=mysql-bin #可开可不开
replicate-do-db=oa_system #是你需要复制的数据库名称,如果有多个就用逗号“,”分开;或者分行写
三、开始构建主从复制
1.主库
在120.168.0.1中创建一个120.168.0.2主机中可以登录的MySQL用户
用户:mysql1 密码:mysql1
mysql>GRANT REPLICATION SLAVE ON *.* TO‘mysql1’@’120.168.0.2’ IDENTIFIED BY ‘mysql1’;
mysql>FLUSH PRIVILEGES;
#注:下图中的File是日志文件 Position 是开始行数,下面有用到
2.主库
查看120.168.0.1中MySQL服务器二进制文件名与位置
mysql>SHOW MASTER STATUS;
注意:如果为空则需要重启MySQL(service mysqld restart),MariaDB的重启方法为(systemctl restart mariadb.service)
3.从库
告知二进制文件名与位置
在120.168.0.2中执行:mysql>change master to master_host='120.168.0.1',master_user='mysql1',master_password='mysql1',master_log_file='mysql-bin.000002',master_log_pos=120;
#这里的配置就是使用的上面主库的信息.还有日志文件的信息
四、测试主从复制
在120.168.0.2中输入:
mysql>SLAVE START; #开启复制
mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功 出现如下:
或出现:
Slave_IO_Runing:Yes
Slave_SQL_Running :yes
就说明成功了.然后你在主数据库的增删改查,看看从数据库.应该就会同步执行了.
五、文章来源
每个人都有自己的方式,不同的情景,时间都会有不一样的结果,我的问题在这两位作者中得到了解决,大家可以一起参考
https://blog.****.net/sc9018181134/article/details/53886533
http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7
mysql高级书籍,下载地址:https://download.****.net/download/qq_36103520/10461759