一主一从配置 or 一主多从

来源:互联网 发布:湖北金税盘开票软件 编辑:程序博客网 时间:2024/04/28 13:43
一主一从配置 or 一主多从: 

    1)确保主从服务器上安装了相同版本的数据库。因为复制的功能在持续的改进中,所 以在可能的情况下推荐安装最新的稳定版本。
    2)在主服务器上,设置一个复制使用的账户,并授予 REPLICATION SLAVE 权限
      --在这里如果报错:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value  ? 则需要在my.cnf 或者my.init上配置参数: 
          sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
     修改为
          sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 
     然后重启MYSQL

    3)修改主数据库服务器的配置文件 my.cnf,开启 BINLOG,并设置 server-id 的值。这 两个参数的修改需要重新启动数据库服务才可以生效。
      my.cnf 配置:
[mysqld]
log-bin = /home/mysql/log/mysql-bin.log       -->必须开启。
server-id = 1       -->这个值手动设置,每个节点唯一。
binlog-ignore-db=mysql  
read_only=TURE  (read_only=1)

   4)在主服务器上,设置读锁定有效,这个操作是为了确保没有数据库操作,以便获得 一个一致性的快照:
      mysql> flush tables with read lock;

   5) 然后得到主服务器上当前的二进制日志名和偏移量值。 这个操作的目的是为了在从 数据库启动以后,从这个点开始进行数据的恢复。  -->( 一个是file 编号,一个是position 值

     mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000039 | 102 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

   6)备份主库上的数据文件到 备库中,如果是使用mysqdump 最好一个库一个库备份。 也可以直接在操作系统下 cp 全部的数据文件到从数据库服务器上,也可以通过 mysqldump 导出数据或者使用 ibbackup 工具进行数据库的备份。

   7)主数据库的备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器 上执行:
  mysql> unlock tables;

   8)将主数据库的一致性备份恢复到从数据库上。
   9)修改从数据库的配置文件 my.cnf,增加 server-id 参数。注意 server-id 的值必须是 唯一的,不能和主数据库的配置相同,如果有多个从数据库服务器,每个从数据库服务器必须有自己唯一的 server-id 值。
   
    这里备库1 配置:
    my.cnf 中修改:
   [mysqld]
    server-id = 2

  10)在从服务器上,使用--skip-slave-start 选项启动从数据库,这样不会立即启动从数 据库服务上的复制进程,方便我们对从数据库的服务进行进一步的配置:
[mysql@master1 ]$ ./bin/mysqld_safe --skip-slave-start &   或者:  shell# /etc/init.d/mysqld start --skip-slave-start

 11)对从数据库服务器做相应设置,指定复制使用的用户,主数据库服务器的 IP、端 口以及开始执行复制的日志文件和位置等,具体语法如下: 
mysql> CHANGE MASTER TO    
-> MASTER_HOST='master_host_name',                           -->主机host(IP)
-> MASTER_USER='replication_user_name',                     -->复制的用户user( 如果是主从从,指定的复制用户必须不同)
-> MASTER_PASSWORD='replication_password',            -->复制用户的密码
-> MASTER_LOG_FILE='recorded_log_file_name',             -->对应第5步的 file 编号。
-> MASTER_LOG_POS=recorded_log_position,                 -->对应的POS编号
-> MASTER_PORT=3308;
 
  12)在从服务器上,启动 slave 线程:
mysql> start slave;

  13)这时 slave 上执行 show processlist 命令将显示类似如下进程:
mysql> show processlist \G

  14)查看master 进程状态: mysql > show master status \G  
   主要查看: Slave_IO_Running 和 Slave_SQL_Running  是否都为YES 
  ==> 如果是一主多从  一样配置。



mysql 从服务器切换为主服务器:

步骤如下:

1 确认从服务器已经完成所有同步操作:


stop slave io_thread  

show processlist 

 

直到看到状态都为:xxx has read all relay log 表示更新都执行完毕


2 停止从服务器slave服务


stop slave


3 将从服务器切换为主服务器:


reset master 


完成切换。


PS: 如果从服务器设置了 read only 选项,则需要将这个参数去掉并重新启动数据库。

0 0
原创粉丝点击