通过实现MySQL的主从复制功能,可以实现系统的读写分离、容灾等。
安装
首先需要安装后的数据库一份,然后安装。如果是在单机上的安装,可以查看如下博客:
http://blog.csdn.net/yumingbeizhan/article/details/73247005主从复制要求如下
2.1 MySQL数据库的版本必须要保持一致
2.2 初始化表,并在后台启动mysql
2.3 修改root的密码配置主服务器master
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=56 //[必须]服务器唯一ID,默认是1,一般取IP最后一段配置从服务器slave
[mysqld]
log-bin=mysql-bin //[不是必须]启用二进制日志
server-id=57 //[必须]服务器唯一ID,默认是1,一般取IP最后一段重启两个MySQL
先启动主服务Master,再启动从服务器主服务器授权账户salve
GRANT REPLICATION SLAVE ON . to ‘MyMaterSlave’@’%’ identified by ‘123456’;登录主服务器master查看状态
show master status;File Position Binlog_Do_DB Binlog_Ignore_DB Executed_Gtid_Set
———————- ——– ———— —————- ——————-
mysql-bin.000003 313注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
配置从服务器
设置从服务器需要连接的主服务器以及日志文件和日志记录开始位置:
change master master_host=’1270.0.1’,master_user=’MyMaterSlave’,master_password=’123456’,
master_log_file=’mysql-bin.000003’,master_log_pos=313;检查从服务器的状态
show slave status;Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1 //主服务器地址
Master_User: MyMaterSlave//授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
*Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES*注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错 误)。解决方案请继续往下看。
以上操作过程,主从服务器配置完成。主从服务器测试
在主服务新建立一个数据库然后新建立一张表,然后执行数据库的写入操作。查看从数据库已经存在新增数据库新增表新增表内容从数据库Slave_IO_Running connecting
可以查看%Mysql_HOME%/data目录下以err结尾的日志,详细错误。
如果错误是1045,一般情况下用户和密码错误,也可能是数据库权限不够,可以使用root账户测试一下。主数据库插入数据不了
插入主数据库时出现以下错误:
Cannot execute statement: impossible to write to binary log since statement is in row for
可以参考此博客:
http://www.cnblogs.com/davidgu/p/3765333.html怎样实现同步指定数据库?
在配置文件添加一下字段:
binlog-do-db=test1
只有数据库test1表中的数据会同步。主从配置常用命令
show master status – 查看主服务器的状态
show slave status – 查看从服务器的状态
start slave – 开启主从复制
stop slave – 停止主从复制