mysql主从配置


mysql主从配置:
主机设置:
vi /etc/my.cnf
#服务器的ID,必须唯一
server_id=35
#复制过滤:不需要备份的数据库
binlog-ignore-db=mysql
binlog-ignore-db = information_schema
binlog-ignore-db = sys
binlog-ignore-db = performance_schema
#指定对名称为test_db的数据库记录二进制日志
binlog-do-db = test_db
#二进制日志名字
log-bin=demo-mysql-bin
#为每个session 分配的内存,在事务过程中用来存储进制日志的缓存
binlog_cache_size=1M
#主从复制的格式(mixed, statement, row,默认格式是statement)
binlog_format=mixed
#二进制日志自动删除过期的天数。默认值为0,表示不自动删除
expire_logs_days=7
##跳过主从复制中遇到的所有错误或指定类型的错误,避免从机复制中断
##如1062错误是指一些主键重复,1032错误是因为主从数据库数据不致
slave_skip_errors=1032
#作为从机时的中继日志
relay_log=demo-mysq1-relay-bin
# 1og_slave_updates=1 表示作为从机时也将复制事件写进自己的进制日志中
log_slave_updates=1
#主键自增规则,避免主主同步ID重复的问题
#自增因子(每次加2)
auto_increment_increment=2
#自增偏移(从1开始),单数
auto_increment_offset=1

完成重启之后:用root登入服务器,使用如下指令创建一个同步用户并授权
mysql> grant replication slave,replication client on *.* to 'user36'@'10.226.128.4' identified by 'User123456.';
如果报密码不规范:
    mysql> SHOW VARIABLES LIKE 'validate_password%';
    mysql> set global validate_password_policy=LOW;
         set global validate_password_length=4;
    关于 mysql 密码策略相关参数;
        1)、validate_password_length  固定密码的总长度;
        2)、validate_password_dictionary_file 指定密码验证的文件路径;
        3)、validate_password_mixed_case_count  整个密码中至少要包含大/小写字母的总个数;
        4)、validate_password_number_count  整个密码中至少要包含阿拉伯数字的个数;
        5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
        关于 validate_password_policy 的取值:
        0/LOW:只验证长度;
        1/MEDIUM:验证长度、数字、大小写、特殊字符;
        2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
        6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;
执行完进行查看:
mysql> flush privileges;
mysql> show master status;
可以看到:master_log_file 、 master_log_file 的值

从库配置:
##-------------------------------------------配置开始------------------------------------------------##
# #[必须]服务器唯一ID
server-id = 36
# # replicate-do-db 需要做复制的数据库,如果复制多个数据库,重复设置这选项即可master上不需要此项,slave上需要
#复制名称为test_db的数据库
replicate-do-db = test_db
# # replicate-ignore-db 不需要复制的数据库,如果要忽略复制多个数据库,重复设置这个选项即可
replicate-ignore-db = mysql
#不需要(忽略)复制名称为information_schema的数据库
replicate-ignore-db = information_schema

完成重启之后:用root登入
mysql> change master to master_user='root', master_password='root', master_host='10.226.128.3',master_port=3306, master_log_file='demo-mysql-bin.000006',master_log_pos=1299,master_connect_retry=30 ;


grant all privileges on test_db.* to 'user36'@'10.226.128.4' identified by "User123456.";

grant all privileges on information_schema.* to 'root'@'10.226.128.4' identified by "Sroot123456.";
grant all privileges on mysql.* to 'root'@'10.226.128.4' identified by "Sroot123456.";
grant all privileges on performance_schema.* to 'root'@'10.226.128.4' identified by "Sroot123456.";
grant all privileges on sys.* to 'root'@'10.226.128.4' identified by "Sroot123456.";
grant all privileges on  test_db.* to 'root'@'10.226.128.4' identified by "Sroot123456.";
创建用户:
 insert into mysql.user(Host,User,authentication_string) values("localhost","user36",password("User123456."));

root 密码为空的时候配置文件中下面这句:
skip-grant-tables
GRANT ALL PRIVILEGES ON *.* TO 'user36'@'10.226.128.4' IDENTIFIED BY '123' WITH GRANT OPTION;

你可能感兴趣的:(mysql,主从复制)