20201113 MYSQL常用知识

给某个用户授权

>> grant all privileges on *.* to [email protected]'%' identified by '密码值'; 

 >> flush privileges;

数据库主从关系:

  1. 两个服务器中my.ini配置

20201113 MYSQL常用知识

 

注释掉skip-name-resolve(如果有的话),在[mysqld]修改server-id,log-bin,binlog_format,expire_logs_days,log_bin_trust_function_creators, replicate-ignore-db,replicate-do-db等配置,改成如下配置,其中,server-id两个服务器不同

# Server Id.

server-id=3

# Binary Logging.

log-bin="D:/ProgramData/MySQL/mysql-5.7.25-winx64/Datas/bin_log/mysql-bin"

# binary logging format - mixed recommended

binlog_format=mixed

expire_logs_days=8

log_bin_trust_function_creators=on

replicate-ignore-db=mysql        

replicate-ignore-db=test           

replicate-ignore-db=information_schema  

replicate-do-db=XXXX

replicate-ignore-table = XXXX
replicate-ignore-table = XXXX
replicate-ignore-table = XXXXX

#记录从服务器的更新

log-slave-updates=on

#忽略所有同步错误

slave-skip-errors=all

#中继日志,避免偶发的同步失败

relay-log=mysql-log-bin

上述配置修改后保存,重启mysql;

一定一定要注意,两个server-id不能相同

  1. 打开A机器上Navicat,将要做主从备分的数据库备份,得到xxxA.sql;
  2. 打开B机器上Navicat,新建数据库xxxA,执行xxxA.sql还原数据库,得到与A一样的数据库
  3. 在A机器上Navicat上新建查询,执行如下sql(如果使用命令行执行以下sql,请直接在服务器上使用127.0.0.1登录mysql,避免权限问题):

CREATE USER 'repl'@'机器B' IDENTIFIED BY 'slavepass';

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'机器B'  identified BY 'slavepass';

flush privileges;

4.在机器B上Navicat上新建查询,执行如下sql(如果使用命令行执行以下sql,请直接在服务器上使用127.0.0.1登录mysql,避免权限问题):

CREATE USER 'repl'@'A机器IP' IDENTIFIED BY 'slavepass';

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'A机器IP' identified BY 'slavepass';

flush privileges;

5.在A机器IP上Navicat上执行show master status;得到如下结果,记录下File和Position值;

20201113 MYSQL常用知识

6.在机器B上Navicat上执行show master status;得到如下结果,记录下File和Position值;

20201113 MYSQL常用知识

7.在A机器IP上Navicat上执行如下sql,其中master_host值服务器2的ip,master_log_file和master_log_pos为服务器2记录的File和Position值(见第6步)

------------------------------------------------

如果pos一直变,可执行以下语句:

FLUSH TABLE WITH READ LOCK;

unlock tables;

------------------------------------------------

stop slave;

reset slave;

CHANGE MASTER TO master_host = '机器B',

 master_user = 'repl',

 master_password = 'slavepass',

 master_log_file = 'mysql-bin.000001',

 master_log_pos = 2193;

start slave;

show slave status;

8.在机器B上Navicat上执行如下sql,其中master_host值服务器1的ip,master_log_file和master_log_pos为服务器1记录的File和Position值(见第5步)

stop slave;

reset slave;

CHANGE MASTER TO master_host = 'A机器IP',

 master_user = 'repl',

 master_password = 'slavepass',

 master_log_file = 'mysql-bin.000002',

 master_log_pos = 531;

start slave;

show slave status;

9.第8,9步得到的结果,如果Slave_IO_Running和Slave_SQL_Running的值都是yes,说明主主备份成功,在两个服务器的my.ini中打开skip-name-resolve注释,重启mysql。

20201113 MYSQL常用知识
查了半天没有解决:
你看你的配置文件是不是有个skip-name-resolve参数,把它注释掉,重启数据库服务
再执行改权限语句试下