步骤:
1.在主服务器上修改配置文件
vi /etc/my.cnf
添加:log-bin=mysql-bin server-id=1 log-slave-updates
退出后重启服务:systemctl restart mysqld.service
2.在从服务器上修改配置文件
vi /etc/my.cnf
添加:relay-log=relay-bin server-id=2
退出后重启服务:systemctl restart mysqld.service
3.查看从服务器的中继日志是否启动成功:mysql > show global variables like '%relay%';
4.在主服务器上创建有复制权限的账号
grant replication slave on *.* to 'user1'@'172.16.92.%' identified by '1234';
刷新权限:flush privileges;
5.在主服务器上查看状态信息:
mysql > show master status;
补充:如果要拷贝数据,以下命令:
在有数据的服务器上:
[root@master~]# mysql -u root -proot
mysql>flush tables with read lock;
[root@master~]# mysqldump --all-databases -uroot -p >all_databases.sql
[root@master ~]# mysql -uroot -proot
mysql> unlock tables;
[root@master ~]# scp all_databases.sql root@172.16.92.141:/root
在要备份的服务器上:
[root@slave ~]# mysql -uroot -p -hlocalhost -P3306 --default-character-set=utf8 < all_databases.sql
或者 mysql -uroot -proot
mysql>source /root/all_databases.sql;
6.从服务器上:stop slave;
7.从服务器上连接主服务器
change master to master_host='主服务器的ip',master_user='slave_user',master_password='1234',master_log_file='mysql-bin.000001',master_log_pos=609;
change master to master_host='172.16.92.151',master_user='user2',master_password='1234',master_log_file='mysql-bin.000007',master_log_pos=1438;
8.启动复制线程:start slave;
show slave status \G;
Slave_IO_Running和Slave_SQL_Running两个线程必须都为Yes。
systemctl stop firewalld.service
9.测试
注意:检查连通性,如果不通则关闭防火墙:systemctl stop firewalld.service
注意:搭好后,停掉从服务器,在开启会报错,原因是从服务器的配置文件被修改了。
主主复制:
主机1:
# my add
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
server-id = 1
log-bin=mysql-bin
log-slave-updates
auto-increment-increment=2
auto-increment-offset=1
max_connections=40
主机2:
# my add
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
server-id=2
relay-log=relay-bin
log-bin=mysql-bin
log-slave-updates
auto-increment-increment=2
auto-increment-offset=2
max_connections=40
字符集设置后使用 sudo systemctl restart mysqld.service 重启
查看字符集命令:
SHOW VARIABLES LIKE 'character%';
网友评论