25yicms利用ASP.NET(C#)+MSSQL技术全力打造功能最强大的营销型企业网站管理系统,企业做网站系统,做网站软件,提供div+css企业网站模板。
阅读内容

MySQL主从数据库同步详细教程


时间:2014/12/16   来源:企业网站管理系统
   近几年来,数据库在网站的构成中愈发重要。但是,如果数据库出现暂时故障、主机商跑路了、或者服务器崩溃,有什么办法可以让数据库依旧能够访问呢?一个好的解决办法是设置数据库的主从同步备份。这种方法能够让你的数据库拥有一个完全相同的备份:数据的读写都发生在主数据库(Master Database)上,但是从数据库(Slave Database)时刻与主数据库保持同步。这样,如果主数据库发生故障,就可以继续从从数据库读取数据,不影响数据库的访问。
  
  下面,25亿企业网站管理系统将展示怎样基于MySQL设置主从数据库同步备份。教程的测试环境是Ubuntu 12.04 LTS, 但在其他的Linux发行版上应当同样适用,部分细节(比如MySQL配置文件的位置)可能因系统环境的不同而有细微差异。
  
  一些注意事项
  
  主从数据库同步备份是一个很简单的操作,但是有一些必须要了解的注意事项:
  
  1,设置好数据库同步后,一定不能向从数据库写入数据!这将会破坏主-从数据库之间的同步状态,并可能导致数据库出现严重错误而崩溃。
  
  2,一般情况下,读、写操作都应该发生在主数据库;如果确有需要,读操作也可以发生在从数据库,可能造成的后果是数据同步的延迟导致读出的数据并不是最新的想要的数据。
  
  了解这几点以后,我们就可以开始真正操作了!
  
  3,本教程设计两台服务器的两个数据库,如果跟着教程操作,请分清每一步操作是在哪台服务器上面进行的,以免发生错误设置。
  
  搭建主数据库
  
  首先,用SSH连接上你的服务器/VPS,安装MySQL数据库软件。执行:
  
  apt-get update; apt-get install mysql-server
  
  安装过程中可能会提示设置新的root密码(是MySQL的root用户,不是系统的root用户;Redhat-based Distributions没有这类的提示。译者注)。安装完毕后,打开MySQL配置文文件/etc/mysql/my.cnf (如果配置文件不是这个位置,请执行find / -name my.cnf查找,译者注)。
  
  查找下面的行:
  
  bind_address = 127.0.0.1
  
  更改为:
  
  bind_address = 0.0.0.0
  
  这个更改确保了MySQL监听所有的IP地址,而不是某一个特定的IP地址。需要注意的是,这个操作将允许其他主机连接到这台服务器上(未登陆);虽然这并不会带来什么安全问题,但你仍可以通过修改IP安全策略来更改这样的设定。
  
  接着,在配置文件中找到下面两行:
  
  server-id = 1
  
  log_bin = /var/log/mysql/mysql-bin.log
  
  删除这两行前面的注释符(第二行不是必须的,译者注)。修改完毕后,保存并关闭文件,执行下列指令重启MySQL服务器:
  
  service mysql restart
  
  重启完毕后,执行下列指令,用安装时设置的root密码登陆MySQL服务器:
  
  mysql -u root -p
  
  下面我们要新建一个账户以供从数据库登陆并执行同步操作。执行下面的命令(不要忘记结尾的分号,否则将不会正确执行。译者注)
  
  GRANT REPLICATION SLAVE ON *.* TO ‘replication’@xx.xx.xx.xx IDENTIFIED BY ‘password';
  
  这里的password是你设置的一个密码,请牢记;xx.xx.xx.xx是从数据库所在服务器的IP地址(如果你不想限制IP登陆,可以把这个IP地址连同前面的@一起删除,这不会影响同步操作。译者注)。
  
  这样,我们搭建好了主数据库。
  
  搭建从数据库
  
  和搭建主数据库相同,安装好MySQL软件。打开配置文件/etc/mysql/my.cnf,找到server-id关键字,删除前面的注释符,将值改成一个不是1的数字(不要和前面主数据库的值相同就可以了)。然后,重启数据库,并用root账户登录。
  
  下面,我们需要将主数据库中已有的数据导入从数据库;如果你的主数据库中没有数据,可以跳过这部分。
  
  首先,登录主数据库,执行下面的命令:
  
  SHOW MASTER STATUS;
  
  数据库将会显示当前的数据库文件名和定位数(File 和 Position),你可以将这两项记下来,后面将会用到。返回系统Shell,执行下面指令:
  
  mysqldump -databases database1 database2 database3 -u root -p > data.sql
  
  此处请用你的MySQL的各数据库名替换上面的database1等。你将被提示输入root用户密码。
  
  将这个文件导入到从数据库的服务器上,执行下列指令将这几个数据库导入从数据库:
  
  cat data.sql | mysql -u root -p
  
  这样,数据已经导入至从数据库。下面,我们继续设置,使得从数据库能够自动从主数据库同步数据的更改。首先,用root账户登陆从数据库。
  
  如果之前你没有从主数据库中导入数据至从数据库,那么请执行下面的指令:
  
  CHANGE MASTER TO MASTER_HOST = ‘xx.xx.xx.xx’, MASTER_USER = ‘replication’, MASTER_PASSWORD = ‘password';
  
  此处,xx.xx.xx.xx为主数据库所在服务器的IP地址,password为之前设置的数据库密码。
  
  如果之前你向从数据库导入了主数据库的已有数据,那么请执行下面的指令:
  
  CHANGE MASTER TO MASTER_HOST = ‘xx.xx.xx.xx’, MASTER_USER = ‘replication’, MASTER_PASSWORD = ‘password’, MASTER_LOG_FILE = ‘filename’, MASTER_LOG_POS=’num';
  
  这里,xx.xx.xx.xx为主数据库所在服务器的IP地址,password为之前设置的数据库密码,filename和num为之前记录下来的File和Position项值。
  
  接着,继续在从数据库中执行:
  
  SLAVE START;
  
  这样,从数据库设置完毕!
  
  至此,主从数据库同步备份已经设置完毕;此时若在主数据库中进行数据的读写(比如新建数据库,新建表、字段,写入、删除数据等),从数据库将会发生相应的改变。
点击次数:       打印此页  关闭