主从复制原理
Binary log:主数据库的二进制日志;Relay log:从服务器的中继日志。 复制过程:(1)主数据库在每次事务完成前,将该操作记录到binlog日志文件中; (2)从数据库中有一个I/O线程,负责连接主数据库服务,并读取binlog日志变化,如果发现有新的变动,则将变动写入到relay-log,否则进入休眠状态; (3)从数据库中的SQL Thread读取中继日志,并串行执行SQL事件,使得从数据库与主数据库始终保持一致。
hadoop11 安装 mysql master
1、在/etc/my.cnf文件
# 主从复制授权
mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
# 查看master的状态
mysql> show master status;
2、登录mysql数据库 mysql -uroot -p
# 主从复制授权
mysql> GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
3、重启mysql服务
systemctl restart mysqld
4、登录mysql数据库 mysql -uroot -p
# 查看master的状态
mysql> show master status;
hadoop12 安装 mysql slave
1、在/etc/my.cnf文件
# 指定从库从哪个主库的biglog的哪个位置进行数据同步
mysql> CHANGE MASTER TO MASTER_HOST='hadoop11', MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=999;
# 启动主从复制
mysql> start slave ;
2、登录mysql数据库 mysql -uroot -p
MASTER_LOG_FILE 和 MASTER_LOG_POS 来自于上边 show master status的截图
mysql> show slave status\G
3、重启mysql服务
systemctl restart mysqld
4、如果hadoop11里面之前已经有db1数据库,需要自己手动在hadoop12上创建db1数据库
问题汇总:
问题1:如果这张图上面的第一个不是yes
hadoop11上
hadoop12上
查看报错信息/var/log/mysqld.log
[ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master 'root@hadoop11:3306' - retry-time: 60 retries: 11 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061
解决办法:
在Hadoop11从库mysql中进行下面操作
grant all privileges on *.* to 'root'@'%' with grant option;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
show variables like '%validate_password%';
set global validate_password.policy=LOW;
set global validate_password.length=4;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;
alter user root@localhost identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
SELECT Host, User, plugin from user;
再在hadoop12上查看
show slave status\G
问题2:如果数据库是之前克隆就有的,对auto.cnf文件的中的uuid进行修改,并且重启数据库