Mysql主从复制

本文以我的zabbix数据库为例:
master:1.1.1.1  
slave:1.1.1.2
 
一、master操作:
  1. mysql -uroot -p123                                                  # 进入master数据库。
  2. grant replication slave on *.* to 'zhao'@'1.1.1.2' identified by 'zhao';     # 授予同步数据的用户权限
  3. flush tables with read lock ;                                    # 数据库只读锁定命令,防止导出数据库的时候有数据写入。
  4. mysqldump -uroot -p zabbix > /root/my.sql            # 导出zabbix数据库为my.sql。
  5. scp /root/my.sql root@1.1.1.2:/root                        # 拷贝my.sql到slave的root下。
slave操作:
  1. mysql -uroot -p123                      # 进入slave数据库
  2. create database zabbix;              # 按实际情况创建,指定合适的字符编码。
  3. use zabbix                                   # 进入zabbix数据库。
  4. source /root/my.sql                      # 导入my.sql到zabbix数据库。
  5. mysql -uzabbix -h1.1.1.1 -p         # 测试是否能登录master的zabbix数据库,前提是在master上给予远程访问权限。
master: 

       1. vim /etc/my.cnf                            # 编辑MySQL配置文件添加如下内容:

            server-id=1                                #设置服务器id,为1表示主服务器。
            log-bin=mysql-bin                      #启动MySQ二进制日志系统。
            binlog-do-db=osyunweidb         #需要同步的数据库名,有多个数据库就写多行。
            binlog-ignore-db=mysql            #不同步mysql系统数据库。
 
      2. service mysqld restart                 # 重启MySQL数据库。
      3. mysql -uroot -p123
      4. show master status;                    # 查看master状态,记住File和Position的值。
           +------------------+----------+--------------+------------------+
           | File                        | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
           +------------------+----------+--------------+------------------+
           | mysql-bin.000019 |    7131    | osyunweidb    | mysql                  |
           +------------------+----------+--------------+------------------+
slave:

1. vim /etc/my.cnf                                 # 编辑MySQL配置文件添加如下内容:

server-id=2                                   #设置服务器id,为1表示主服务器。
log_bin=mysql-bin                        #启动MySQ二进制日志系统。
replicate-do-db=osyunweidb        #需要同步的数据库名,有多个数据库写多行。
replicate-ignore-db=mysql           #不同步mysql系统数据库
 
2. service mysqld restart                     # 重启MySQL数据库。
3. mysql -uroot -p123
4. change master to
>master_host='1.1.1.1',
>master_user='zhao',
>master_password='zhao',
>master_log_file='mysql-bin.000019',
>master_log_pos=7131;              # 执行同步语句。
5. start slave;                                       # 开启slave同步进程。
6. show slave statusG                        # 查看slave同步信息,出现以下内容。
7. 注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!
master:
  1. mysql -uroot -p123
  2. unlock tables;
  3. use zabbix
  4. create table zhao(id int(5) not null primary key,name char(10) not null);
 
备注:查看server_id命令:show variables like 'server_id';
修改server_id命令:set global server_id=2;
 
原文地址:https://www.cnblogs.com/hsjy/p/6588245.html