首页 > 代码库 > Mysql数据库主从复制
Mysql数据库主从复制
- 两台服务器
192.168.1.78
192.168.1.79
两台服务器都安装mysql,安装步骤省略。
- 主从复制配置
1、配置主数据库/etc/my.cnf
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
server-id=100
log-bin=mysqlmaster-bin.log
sync-binlog=1
innodb_buffer_pool_size=512M #为物理内存70%
lower_case_table_names=1 #使mysql不区分大小写
innodb_flush_log_at_trx_commit=1
trust_function_creators=1
2、配置从数据库
server-id=101 #比主数据大1
log-bin=mysqlslave-bin.log
sync-binlog=1
innodb_buffer_pool_size=512M
lower_case_table_names=1
innodb_flush_log_at_trx_commit=1
trust_function_creators=1
3、重启mysql数据库
4、登录主数据库
在主数据库上创建用于主从复制的账户(192.168.1.79换成你的从数据库IP)
GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘192.168.1.79‘ IDENTIFIED BY ‘123456‘;mysql>
主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标):
FLUSH TABLES WITH READ LOCK;mysql>
SHOW MASTER STATUSmysql>
记录这两个值,下面会用到
在主数据库上使用mysqldump命令创建一个数据快照
mysqldump -uroot -p -P3308 --all-databases --triggers --routines --events >all.sqlmysql>
# 接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导出完成。
mysql>
UNLOCK TABLES;
5、登录从数据库
从导入主的快照
mysql>
mysql -uroot -p -h127.0.0.1 -P3308 < all.sql
给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值):
mysql>
CHANGE MASTER TO MASTER_HOST=‘192.168.1.78‘,MASTER_USER=‘repl‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mysqlmaster-bin.000001‘,MASTER_LOG_POS=1431;
#然后启动从数据库的复制线程:
mysql>
START slave;
#接着查询数据库的slave状态
mysql> SHOW slave STATUS \G
如果下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running:
Yes
接下来你可以在主数据库上创建数据库、表、插入数据,然后看从数据库是否同步了这些操作
Mysql数据库主从复制