(整理的学习笔记,方便日后回顾!)
*配置Replication**
准备两台mysql服务器,版本最好一致,防止版本不同带来的兼容性问题。

第一步:配置

主服务器配置文件:/etc/my.cnf 编辑该文件,添加如下:

 [mysqld]
 log-bin=/var/log/mysql/mysql-bin       //生成bin文件路径自己指定
 server-id=1               //随意设置数字,保证id是唯一的
 validate_password=off      //允许使用弱密码,为了方便下面创建测试用户

重启使其生效:systemctl restart mysqld
日志目录:/var/log/mysql 创建:

mkdir -p /var/log/mysql
chown -R mysql.mysql /var/log/mysql    //给目录授权,属主属组给mysql

从配置文件:/etc/my.cnf 添加server-id:

 [mysqld]
 server-id=2    //同上可随意设置,主要保证它是唯一的就好

重启服务

systemctl restart mysqld

从服务器需要一个主数据库存在的用户来登陆主数据库获取数据,所以我们在主数据库里创建一个用户:

1.mysql>CREATE USER 'user_name'@'%' IDENTIFIED BY '123';
2.mysql>GRANT ALL ON *.* TO 'user_name'@'%';         

创建用户后在mysql里刷新注册表:FLUSH PRIVILEGES

1//%所有主机可以是IP、localhost(本机)

2//REPLICATION SLAVE-只读权限,all=所有权限,(库名).(表名)-代表所有 ,by '密码'-需遵顼密码原则

简单在从服务器测试一下刚才创建的用户能否进入主数据库

[root@localhost ~]# mysql -uuser_name -p'123' -h mysql-master1(主服务器IP)

第二步:主从数据保持一致

主数据库中是否存有数据,若存有,用mysqldump 导出数据,并导入从数据库

主:

[root@localhost ~]# mysqldump -uroot -p'xx' -A >/mysql_bak/all.sql
scp /mysql_bak/all.sql 192.168.xx.xx:/root/

从:

[root@localhost ~]# mysqldump -uroot -p'xx' 

最后一步:从数据库里配置链接

查看服务器master详情信息用来配置从数据库

mysql> FLUSH TABLES WITH READ LOCK;   --刷新所有表和阻止写入

mysql> show master status \G      --查看主master的信息
****************** 1. row ****************
             File: mysql-bin.000001     --得到起始bin文件名
         Position: 0                    --得到POS
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

根据上面信息来从数据库里面配置:

mysql> CHANGE MASTER TO 
MASTER_HOST='192.168.10.130',   --主服务器IP
MASTER_USER='user_name',        --连接主服务器数据库的用户
MASTER_PASSWORD='123',          --用户密码
下面这两条手动同步
MASTER_LOG_FILE='mysql-bin.000001',  --起始bin文件名称
MASTER_LOG_POS=0;

完成后,启动从服务器的复制线程并检查--》启动:start slave 停止:stop slave

mysql>  start slave;    --启动
       Query OK, 0 rows affected (0.09 sec)

            show slave status\G;        --检验配置
            长输出中找到:Slave_IO_Running: Yes
           Slave_SQL_Running: Yes   --yes代表完成主从配置,NO则需要根据报错排查问题

如图:MYSQL简单配置主从_第1张图片

排错:IO/SQL常见错误分析

IO线程:IO是从服务器用了去主服务器上去查找bin文件的,取回bin文件暂存在中继日志
SQL线程:从服务器到暂存处读取bin文件并写入从数据库,达到主从数据同步
      1、检查主/var/log/mysql 目录权限是否赋予给mysql
      2、主/etc/my.cnf 配置里的log-bin文件生成位置是否有多条,注释掉其他,保留自己设置
      3、主数据库上创建给从用来访问链接的用户,有权限问题
      4、server-id 相同

具体问题具体分析,多根据报错定位问题,并解决,一起加油