mysql主从同步配置
2015-11-01 13:17
686 查看
1.主从两台服务器先安装好mysql,访问服务器与主从三个服务器之间网络互相可以访问。
访问服务器:192.168.142.1
mysql主: 192.168.142.143
mysql从: 192.168.142.144
查看mysql配置文件位置: mysql --help | grep 'Default options' -A 1,mysql会依序的去这些位置找my.cnf文件的,没有就下一个。
2.修改主数据库的配置文件
[mysqld]
server-id=1
log-bin=mysqlmaster-bin.log
sync_binlog=1
#注意:下面这个参数需要修改为服务器内存的70%左右
innodb_buffer_pool_size = 512M
innodb_flush_log_at_trx_commit=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
lower_case_table_names=1
log_bin_trust_function_creators=1
默认情况下Mysql只允许本地登录,所以需要修改配置文件将地址绑定给注释掉
#bind-address = 127.0.0.1 <---注释掉这一行
修改后重启mysql
3.修改从数据库的配置文件(server-id配置为大于1的数字即可)
[mysqld]
server-id=2
log-bin=mysqlslave-bin.log
sync_binlog=1
#注意:下面这个参数需要修改为服务器内存的70%左右
innodb_buffer_pool_size = 512M
innodb_flush_log_at_trx_commit=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
lower_case_table_names=1
log_bin_trust_function_creators=1
默认情况下Mysql只允许本地登录,所以需要修改配置文件将地址绑定给注释掉
#bind-address = 127.0.0.1 <---注释掉这一行
修改后重启mysql
4.SSH登录到主数据库,在主数据库上创建用于主从复制的账户
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.142.144' IDENTIFIED BY 'rep';
5.主数据库锁表
FLUSH TABLES WITH READ LOCK;
6.然后克隆一个SSH会话窗口,在这个窗口打开MySQL命令行
SHOW MASTER STATUS;
记录查询结果,例如为如下结果
+------------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| mysqlmaster-bin.000001 | 261 | | |
+------------------------+----------+--------------+------------------+
7.在主数据库上创建一个数据快照
mysqldump -uroot -p -h127.0.0.1 -P3306 --all-databases --triggers --routines --events >all.sql
8.解锁第5步的锁表操作
UNLOCK TABLES;
9.ssh登录到从数据库,通过FTP、SFTP或其他方式,将上一步备份的主数据库快照all.sql上传到从从数据库服务器某个路径,从导入主的快照
mysql -uroot -p -h127.0.0.1 -P3306 < all.sql
10.给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值, MASTER_LOG_FILE更改为第5步FIle字段的值,MASTER_LOG_PATH该为第6步中的Position字段的值)
登录到mysql
mysql> CHANGE MASTER TO MASTER_HOST='192.168.142.143',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysqlmaster-bin.000001',MASTER_LOG_POS=261;
11.启动从数据库的复制线程
mysql> START slave;
12.查询从数据库的状态
mysql> SHOW slave STATUS \G;
如果下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
接下来你可以在主数据库上创建数据库、表、插入数据,然后看从数据库是否同步了这些操作。
访问服务器:192.168.142.1
mysql主: 192.168.142.143
mysql从: 192.168.142.144
查看mysql配置文件位置: mysql --help | grep 'Default options' -A 1,mysql会依序的去这些位置找my.cnf文件的,没有就下一个。
2.修改主数据库的配置文件
[mysqld]
server-id=1
log-bin=mysqlmaster-bin.log
sync_binlog=1
#注意:下面这个参数需要修改为服务器内存的70%左右
innodb_buffer_pool_size = 512M
innodb_flush_log_at_trx_commit=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
lower_case_table_names=1
log_bin_trust_function_creators=1
默认情况下Mysql只允许本地登录,所以需要修改配置文件将地址绑定给注释掉
#bind-address = 127.0.0.1 <---注释掉这一行
修改后重启mysql
3.修改从数据库的配置文件(server-id配置为大于1的数字即可)
[mysqld]
server-id=2
log-bin=mysqlslave-bin.log
sync_binlog=1
#注意:下面这个参数需要修改为服务器内存的70%左右
innodb_buffer_pool_size = 512M
innodb_flush_log_at_trx_commit=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
lower_case_table_names=1
log_bin_trust_function_creators=1
默认情况下Mysql只允许本地登录,所以需要修改配置文件将地址绑定给注释掉
#bind-address = 127.0.0.1 <---注释掉这一行
修改后重启mysql
4.SSH登录到主数据库,在主数据库上创建用于主从复制的账户
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.142.144' IDENTIFIED BY 'rep';
5.主数据库锁表
FLUSH TABLES WITH READ LOCK;
6.然后克隆一个SSH会话窗口,在这个窗口打开MySQL命令行
SHOW MASTER STATUS;
记录查询结果,例如为如下结果
+------------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| mysqlmaster-bin.000001 | 261 | | |
+------------------------+----------+--------------+------------------+
7.在主数据库上创建一个数据快照
mysqldump -uroot -p -h127.0.0.1 -P3306 --all-databases --triggers --routines --events >all.sql
8.解锁第5步的锁表操作
UNLOCK TABLES;
9.ssh登录到从数据库,通过FTP、SFTP或其他方式,将上一步备份的主数据库快照all.sql上传到从从数据库服务器某个路径,从导入主的快照
mysql -uroot -p -h127.0.0.1 -P3306 < all.sql
10.给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值, MASTER_LOG_FILE更改为第5步FIle字段的值,MASTER_LOG_PATH该为第6步中的Position字段的值)
登录到mysql
mysql> CHANGE MASTER TO MASTER_HOST='192.168.142.143',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysqlmaster-bin.000001',MASTER_LOG_POS=261;
11.启动从数据库的复制线程
mysql> START slave;
12.查询从数据库的状态
mysql> SHOW slave STATUS \G;
如果下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
接下来你可以在主数据库上创建数据库、表、插入数据,然后看从数据库是否同步了这些操作。
相关文章推荐
- MySQL数据库开发与优化视频
- MYSQL-复制
- ubuntu15.04 mysql5.6.27编码格式配置
- mac mysql客户端操作mysql
- Mysql参见SHOW命令总结
- mysql读写分离的实现之amoeba
- MySQL 数据库常用命令小结
- mysql 学习记录(十九)--Innodb表锁
- mysql字符串查询大小写问题
- mysql基础0之配置
- mysql AUTO_INCREMENT
- c# + Maticsoft.DBUtility+ mysql 做winform的遇到的一些问题及处理
- mysql sysbench测试安装及命令
- mysql计算经纬度亮点之间的距离
- mysql load infile和into outfile
- windows下解决mysql密码更改问题
- MySQL CMake 安装说明
- MySQL数据库基本操作
- 浅谈 sqlserver 和 mysql存储过程、函数的区别
- MySQL常用数据类型