mysql 主从服务器搭建

准备两个mysql服务器,这里是 192.168.159.1(主服务器)和 192.168.159.3(从服务器)

两个mysql版本是要一致的,我都是用的MySQL 8.0

然后主服务器中修改mysql的cnf文件([mysqld]下面)添加:
log-bin=mysql-bin                 #这是开启mysql的log   从服务器是读取log进行同步读取的

binlog-do-db=test                 #这是指定同步那个数据库 我自己建了个test库

server-id=1                         #这是指定mysql服务的id,主从服务器中这个id是不能重复的,要保持一致

然后从服务器中需要修改mysql的cnf文件([mysqld]下面)添加:

log-bin=mysql-bin          # 这个可以不加,没试过去掉这个,保险还是加上了

server-id=3         #这个是指定id,必须要设置的,然后不能和主mysql的一样

设置完配置后重启下mysql

support-files/mysql.server  restart

然后主服务器创建新的用户 backup 密码设置为 repace  给他test库的权限

(当然用户和权限你们可以自定义,但是要有有   读取备份库的权限  ,我这里是给了test库的所有权限)

create user "backup"@"%" identified by "repace";

grant all privileges on test.* to 'backup'@'%';  

 然后获取主服务器的日志信息

 show master status;

+------------------------+-----------+--------------+------------------+-------------------+
| File                        | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+-----------+--------------+------------------+-------------------+
| mysql-bin.000001 |     2259 |              |                  |                   |
+------------------------+-----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

这里需要的数据是File(mysql-bin.000001)和Position(2259)两个字段的值,在从服务器中配置时需要用到

然后切换到从服务器中,执行如下命令

 change master to master_host='192.168.159.1',master_user='backup',master_password='repace',master_log_file='mysql-bin.000001', master_log_pos=2259;

其中参数master_host 是指定master服务器的ip,master_user是指定之前在主服务中创建的用户(就是专门用来进行主从服务器的同步),master_password是该用户的密码,master_log_file,master_log_pos这两个就是配置上面那个主服务器的那两个配置的。

执行成功后开启从服务:

 start slave;

停止同步是  stop slave ;

然后查看信息

show slave status\G;

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.159.1
                  Master_User: backup
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 1950
               Relay_Log_File: localhost-relay-bin.000003
                Relay_Log_Pos: 322
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
 

其中Slave_IO_Running和  Slave_SQL_Running 状态为yes应该是可以了的。

================================================================================

=================================其中曲折=========================================

================================================================================

遇到的坑:
1.密码问题

'caching_sha2_password' requires secure connection. Error_code: MY-002061

这个问题通过

ALTER USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY 'repace';

解决了,应该是密码格式问题导致的

============================================================================================

2.uuid 问题

[ERROR] [MY-013117] [Repl] Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: MY-013117

这是因为我从服务器是从主服务器哪里镜像过来的,所以uuid一致导致的问题,改下

mysql的数据目录下的auto.cnf

vim /usr/local/mysql/data/auto.cnf 

内容如下:

[auto]
server-uuid=2b948564-3f32-11ea-9cd6-000c29c46255

将这个uuid值稍微改下就好,但是要是16进制的,修改如下:

[auto]
server-uuid=2b948564-3f32-11ea-9cd6-000c29c46256

就改了最后那个5改成了6

保存下然后重启mysql就好了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值