主从配置
同步现有数据
- 多台mysql服务器
- 将主服务器中的数据同步到其他服务器中,保证现有数据相同
导出: mysqldump -u user -p password db_name --lock-all-tables > master_db.sql
导入: mysql -u user -p password db_name < master_db.sql (需要先在从服务器中创建一个同名数据库)
服务器配置
主节点配置 Ubuntu
修改配置文件
- sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf ,取消server-id 和 log_bin的注释
- 重启mysql服务器 sudo service mysql restart
server_id 需要唯一,一般为IP地址的最后一部分即可
从节点配置 windows
修改配置文件 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
取消server-id的注释,并将其设置为不同的值
重启mysql服务器
建立连接
- 在主服务器中创建允许远程登录的用户,并给用户赋予操作指定数据库的权限
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON db.* TO 'jeffrey'@'localhost';
FLUSH PRIVILEGES;
ps:不同版本数据库可能不同,自行百度
- 获取主节点当前binary log文件名和位置(position)
show master status
3. 在从节点上设置主节点参数
CHANGE MASTER TO MASTER_HOST='master_ip', # 主节点ip地址
MASTER_USER='master', # 用户名
MASTER_PASSWORD='master', #密码
MASTER_LOG_FILE='mysql-bin.000001', # master status中的File
MASTER_LOG_POS=154; # master status中的Position
- 开启主从同步
start slave
- 查看从节点状态
show slave status \G;
若 Slave_IO_Running 和Slave_SQL_Running的值都为yes,则表明配置成功
CHANGE MASTER TO MASTER_HOST=‘192.168.153.129’,
MASTER_USER=‘master’,
MASTER_PASSWORD=‘master’,
MASTER_LOG_FILE=‘mysql-bin.000001’,
MASTER_LOG_POS=1232;