当前位置:Gxlcms > 数据库问题 > MYSQL简单配置主从

MYSQL简单配置主从

时间:2021-07-01 10:21:17 帮助过:4人阅读

*配置Replication**
准备两台mysql服务器,版本最好一致,防止版本不同带来的兼容性问题。

第一步:配置

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

 [mysqld]
 log-bin=/var/log/mysql/mysql-bin       //生成bin文件路径自己指定
 server-id=1               //随意设置数字,保证id是唯一的

日志目录:/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‘@‘%‘    
2.mysql>GRANT USER REPLICATION SLAVE ON *.* TO ‘user_name‘@‘%‘ identified by ‘123‘;         

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

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

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

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

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

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

主:

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

从:

[root@localhost ~]# mysqldump -uroot -p‘xx‘ </root/all.sql

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

查看主服务器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> CHEANGE 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> show slave start;    --启动
       Query OK, 0 rows affected (0.09 sec)

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

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

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

具体问题具体分析,多根据报错定位问题,并解决。

MYSQL简单配置主从

标签:cte   rest   ***   配置文件   数据库   mysqldump   重启   flush   etc   

人气教程排行