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
接下来你可以在主数据库上创建数据库、表、插入数据,然后看从数据库是否同步了这些操作。