做数据库主从同步的作用:备份数据、读写分离、数据集群等。
配置前提:mysql数据库、版本一致(不同版本没有尝试)、数据库名称一样(不一样时不能同步,重写模式没有尝试),
将主库的数据导入到从库一份,以保证基础数据一致(较大的数据量建议使用DMS同步,而且同步时应该库不允许写入操作)
操作实例:
主库:112.2.112.31
从库:103.5.23.56
数据库名称:money
配置过程:
一、主库
找到my.ini(不同名字的话自行搜索自己的系统对应的名字)编辑内容:
[mysqld] log-bin=mysql-bin #开启二进制日志 server-id=1 #设置server-id,这个随意,但是不要和从库一样
配置好了之后重启一下mysql,然后登录mysql
创建同步账号和权限
mysql> CREATE USER 'syn_user'@'103.5.23.56' IDENTIFIED BY 'password123';#创建用户,只是给予从库登录IP mysql> GRANT REPLICATION SLAVE ON *.* TO 'syn_user'@'103.5.23.56';#分配权限 mysql>flush privileges; #刷新权限
4. 查看master状态并记录好:
mysql >show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000014 | 13313 | money | manual,mysql | +------------------+----------+--------------+------------------+
主库可以了,接写了配置从库。
二、从库配置
加入my.ini配置
server-id:1233#和主库不一样就行了 binlog-do-db:money#要同步的数据库名 binlog-ignore-db = mysql# 不同步mysql库和test库 binlog-ignore-db = test
配置好了之后重启mysql服务,然后进入mysql配置同步信息:
CHANGE MASTER TO MASTER_HOST='112.2.112.31', MASTER_PORT=3306, MASTER_USER='syn_user', MASTER_PASSWORD='password123', MASTER_LOG_FILE='mysql-bin.000014', MASTER_LOG_POS=13313; #执行完成后查看从库状态 show slave status; ..... #结果发现下面这两个都是yes就ok了 #Slave_IO_Running: Yes #Slave_SQL_Running: Yes
如果Slave_IO_Running和 Slave_SQL_Running线程不成功可能是版本不对,获取主库的信息不正确、权限不足等,可以查看mysq的日志。
常用命令:start slave;stop slave;reset slave;show slave status;
最后:除了配置mysqld文件和重启mysql服务,其他的只要有权限(比如root账号等)就可以用远程命令在navicat、phpmyadmin等工具直接运行sql命令设置。