MySQL主从复制

175 阅读4分钟

MySQL主从复制

1、解压压缩包并复制成两个文件

进入MySQL3307目录修改my.ini配置文件

basedir="D:\mysql\mysql3307";//指定mysql路径

basedir="d:\mysql\mysql3309\data"

2、管理员的身份CMD进入 MySQL3307\bin目录 执行安装命令

./mysqld.exe -install MySQL3307 --defaults-file="D:\MySQL\MySQL3307\my.ini"

D:\MySQL\MySQL3307\my.ini 修改为实际配置文件目录

安装成功后在服务窗口启动

3、进入MySQL3308目录 修改my.ini文件 将两处端口改为3308

port 3308

修改server-id

如果需要增加Slave原则,此id往后顺延

server-id=102

log-bin=mysql-bin

修改程序和数据目录

basedir="D:\mysql\mysql3308";//指定mysql路径

basedir="d:\mysql\mysql3308\data"

打开只读注释 read_only=ON

3、管理员的身份CMD进入 MySQL3308\bin目录 执行安装命令

安装成功后在服务窗口启动

mysqld -install Mysql3308 --default-file="D:mysql/mysql3308/my.ini"

Mysql 主从复制 1、连接到3307数据库,建立复制账号

Grant replication slave on . TO 'repl'@'%' INENTIFIED BY '123456'

本机需要建立3个账号

GRANT REPLICATION SLAVE ON . TO 'repl'@'::1' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON . TO 'repl'@'127.0.0.1' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON . TO 'repl'@'localhost' IDENTIFIED BY '123456';

查看主机状态

SHOW MASTER status;

2、设置从服务器

change master to MASTER_HOST='127.0.0.1',MASTER_PORT=3307,MASTER_USER='repl',MASTER_PASSWORD='123456',master_log_file='mysql-bin.000004',master_log_pos=343;

参数解释:

MASTER_HOST : 设置要连接的主服务器的ip地址
MASTER_USER : 设置要连接的主服务器的用户名
MASTER_PASSWORD : 设置要连接的主服务器的密码
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,

3、启动从服务器

命令: start slave;

4、查看是否配置成功:

命令: show slave status;

看Slave_IO_Running Slave_SQL_Running 两个都为yes

重新配置需要先停止 从服务 命令:stop slave;

–read_only 该选项让从服务器只允许来自从服务器线程或具有SUPER权限的用户的更新。可以确保从服务器不接受来自客户的更新。

–replicate_do_db=db_name 告诉从服务器只做默认数据库(由USE所选择)为db_name的语句的复制。要指定多个数据库,应多次使用该选项,每个数据库使用一次。请注意不复制跨数据库的语句

–replicate_do_table=db_name.tbl_name 告诉从服务器线程只做对指定表的复制。要指定多个表,应多次使用该选项,每个表使用一次。同–replicate-do-db对比,允许跨数据库更新。

–replicate_ignore_db=db_name 告诉从服务器不要复制默认数据库(由USE所选择)为db_name的语句。要想忽略多个数据库,应多次使用该选项,每个数据库使用一次。

–replicate-ignore-table=db_name.tbl_name 告诉从服务器线程不要复制更新指定表的任何语句(即使该语句可能更新其它的表)。要想忽略多个表,应多次使用该选项,每个表使用一次。

–replicate_wild_do_table=db_name.tbl_name 告诉从服务器线程限制复制更新的表匹配指定的数据库和表名模式的语句。模式可以包含‘%'和‘_'通配符,与LIKE模式匹配操作符具有相同的含义。要指定多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。

–replicate_wild_ignore_table=db_name.tbl_name 告诉从服务器线程不要复制表匹配给出的通配符模式的语句。要想忽略多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。

–replicate_rewrite_db=from_name->to_name 告诉从服务器如果默认数据库(由USE所选择)为主服务器上的from_name,则翻译为to_name。只影响含有表的语句

–report_host=slave_name 从服务器注册过程中报告给主服务器的主机名或IP地址。该值出现在主服务器上SHOW SLAVE HOSTS的输出中。如果不想让从服务器自己在主服务器上注册,则不设置该值。

–report_port=slave_port 连接从服务器的TCP/IP端口号,从服务器注册过程中报告给主服务器。

–skip_slave_start 告诉从服务器当服务器启动时不启动从服务器线程。使用START SLAVE语句在以后启动线程。

–slave_skip_errors=[err_code1,err_code2,… | all] 通常情况,当出现错误时复制停止,这样给你一个机会手动解决数据中的不一致性问题。该选项告诉从服务器SQL线程当语句返回任何选项值中所列的错误时继续复制。 例如:

–slave-skip-errors=1062,1053 –slave-skip-errors=all