linux的mysql主从

  数据库备份命令:mysqldymp -u username -p password -B databaseName > fileName.sql

  拷贝到从服务器:scp fileName.sql 从IP:/root    //IP:要拷贝到的目录

一、主---从

    主服务器:

        1、停止数据库:service mysqld stop  /  systemctl stop mariadb(7版本以上)

        2、配置文件:vim /etc/my.cnf

              定义为主服务器:server-id=1

              用户二进制日志:log-bin=mysql-bin-master(名字随意起)

              定义复制哪个库:binlog-do-db=数据库名

              定义哪个库不可以复制:binlog-ignore-db=mysql(数据库名)

        3、重启数据库:service start mysqld / systemctl start mariadb

        4、登录数据库授权:创建用户给从服务器

              grant    replication     slave on    *.*    to slave@从IP    identified by "1234"

                  (复制权限)     (所有表)                         (密码)

              密码不符合要求,修改密码要求:

                  定义密码长度:set global validate_password_policy=0;

                  定义默认长度:set global validate_password_length=1;

        5、刷新权限:flush privileges;

        6、查看二进制:show master sttus;

        7、查看二进制事件:show binlog events G

    从服务器

        1、测试登录远程mysql:mysql -uuserName -ppassword -h 主IP

        2、导入:mysql -uuserName -ppassword <fileName.sql

        3、停止mysql

        4、修改配置文件:

            vim /etc/my.cnf

            server=2

        5、重启、进入mysql(root)

        6、指定从哪个master(主):

            change master to master_host='主IP';master_user="主名",master_password="主密";

        7、重启从:start  从名

        8、查看从的状态:show 从名 status G(以行形式查看)

    排错:

       如果遇到主从不同步,看一下主从bin-log的位置,然后再同步

         主---show master status G

         从---show 从名 status G

       强制同步

         在主服务器指定file和position

         在从服务器运行:

              change master to master_log_file='file名';

              master_log_pos=position值

         在执行前先停止从:stop 从名

         执行后启动从:start 从名

    排错思路:

         1、二进制日志有没有开启

         2、IPTABLES有没有开放端口

         3、对应的主机IP地址有没有写错

    sql线程出错:

         1、主从服务器数据库不统一:

              出错后,数据少,可手动解决创建插入,再更新从的状态。

原文地址:https://www.cnblogs.com/yuyangphpweibo/p/7882044.html