如何配制MySql的Replication

如何配制MySql的Replication,第1张

一、概述 MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。二、环境 *** 作系统:Linux2.6.23.1-42.fc8#SMP(不安装XEN)Mysql版本:5.0.45-4.fc8设备环境:PC(或者虚拟机)两台三、配置数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下为/etc/my.cnf。3.1设置环境:IP的设置:A主机IP:10.10.0.119Mask:255.255.0.0B主机IP:10.10.8.112Mask:255.255.0.0在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令serviceiptablesstatus查看防火墙状态。如果防火墙状态为仍在运行。使用serviceiptablesstop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。最终以两台主机可以相互ping通为佳。3.2配置A主(master)B从(slave)模式3.2.1配置A为master 、增加一个用户同步使用的帐号:GRANTFILEON*.*TO‘backup’@'10.10.8.112'IDENTIFIEDBY‘1234’GRANTREPLICATIONSLAVEON*.*TO‘backup’@'10.10.8.112'IDENTIFIEDBY‘1234’赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATIONSLAVE的权限才可以。、增加一个数据库作为同步数据库:createdatabasetest、创建一个表结构:createtablemytest(usernamevarchar(20),passwordvarchar(20))、修改配置文件:修改A的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:server-id=1#Server标识log-binbinlog-do-db=test#指定需要日志的数据库、重起数据库服务:servicemysqldrestart查看server-id:showvariablelike‘server_id’;实例:mysql>showvariableslike'server_id'+---------------+-------+|Variable_name|Value|+---------------+-------+|server_id|1|+---------------+-------+1rowinset(0.00sec)、用showmasterstatus/G命令看日志情况。正常为:mysql>showmasterstatus/G***************************1.row***************************File:mysqld-bin.000002Position:198Binlog_Do_DB:test,testBinlog_Ignore_DB:1rowinset(0.08sec)3.2.2配置B为slave、增加一个数据库作为同步数据库:createdatabasetest、创建一个表结构:createtablemytest(usernamevarchar(20),passwordvarchar(20))、修改配置文件:修改B的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:server-id=2master-host=10.10.0.119master-user=backup#同步用户帐号master-password=1234master-port=3306master-connect-retry=60#预设重试间隔秒replicate-do-db=test#告诉slave只做backup数据库的更新、重起数据库服务:servicemysqldrestart查看server-id:showvariableslike‘server_id’;实例:mysql>showvariableslike'server_id'+---------------+-------+|Variable_name|Value|+---------------+-------+|server_id|2|+---------------+-------+1rowinset(0.00sec)、用showslavestatus/G命令看日志情况。正常为:mysql>showslavestatus/G***************************1.row***************************Slave_IO_State:WaitingformastertosendeventMaster_Host:10.10.0.119Master_User:backupMaster_Port:3306Connect_Retry:60Master_Log_File:mysqld-bin.000001Read_Master_Log_Pos:98Relay_Log_File:mysqld-relay-bin.000003Relay_Log_Pos:236Relay_Master_Log_File:mysqld-bin.000001Slave_IO_Running:YesSlave_SQL_Running:YesReplicate_Do_DB:test,testReplicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno:0Last_Error:Skip_Counter:0Exec_Master_Log_Pos:98Relay_Log_Space:236Until_Condition:NoneUntil_Log_File:Until_Log_Pos:0Master_SSL_Allowed:NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master:01rowinset(0.01sec)3.2.3验证配置分别使用insert,delete,update在A主机进行增删改查数据库;查看B主机的数据库是否与A主机一致;若一致,则配置成功。3.3双机互备模式如果在A主机加入slave设置,在B主机加入master设置,则可以做B->A的同步。、在A主机的配置文件中mysqld配置项加入以下设置:master-host=10.10.8.112master-user=backupmaster-password=1234replicate-do-db=testmaster-connect-retry=10、在B的配置文件中mysqld配置项加入以下设置:log-binbinlog-do-db=test注意:当有错误产生时,*.err日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,运行slavestart。重起A、B机器,则可以实现双向的热备份。四、常见问题及解决、Slave机器的权限问题,不但要给slave机器File权限,还要给它REPLICATIONSLAVE的权限。、在修改完Slave机器/etc/my.cnf之后,slave机器的mysql服务启动之前,记得要删除掉master.info、在showmasterstatus或着showslavestatus不正常时,看看.err是怎样说的。、Slave上Mysql的Replication工作有两个线程,I/Othread和SQLthread。I/O的作用是从master3306端口上把它的binlog取过来(master在被修改了任何内容之后,就会把修改了什么写到自己的binlog等待slave更新),然后写到本地的relay-log,而SQLthread则是去读本地的relay-log,再把它转换成本Mysql所能理解的语句,于是同步就这样一步一步的完成.决定I/Othread的是/var/lib/mysql/master.info,而决定SQLthread的是/var/lib/mysql/relay-log.info.、启动slave,命令用startslave;重新启动用restartslave

设置在创建原子或从文件中读取原子之前需要定义的参数。

相关命令: units , dimension , newton , processors , boundary , atom_style , atom_modify .

如果力场参数出现在将要读取的文件中,则这些命令会告诉LAMMPS使用哪种力场: pair_style , bond_style , angle_style , dihedral_style , improper_style 。

在LAMMPS中定义原子的方式有3种。通过 read_data 或 read_restart 命令从数据中读取它们或重新启动文件。这些文件可以包含分子拓扑信息。或使用以下命令在没有分子拓扑的晶格上创建原子: lattice , region , create_box , create_atoms 。使用 replicate 命令可以复制整个原子集以进行更大的模拟 。

一旦定义了原子和分子拓扑,就可以指定多种设置:力场系数,模拟参数,输出选项等。

力场系数由这些命令中设置: pair_coeff , bond_coeff , angle_coeff , dihedral_coeff , improper_coeff , kspace_style , special_bonds 。

这些命令设置了各种模拟参数: neighbor , neigh_modify , group , timestep , reset_timestep , run_style , min_style , min_modify 。

输出选项由 thermo , dump 和 restart 命令设置。

使用 run 命令运行分子动力学模拟。使用 minimize 命令执行能量最小化。

该命令决定在LAMMPS读入并处理输入脚本中的命令时,是否将它们输出到屏幕和/或日志文件中。如果你的输入脚本有错误,使用这个命令可以让你看到最后一个被处理的命令是什么。

该命令用来设置模拟中使用的单位类型。它决定了所有输入脚本、数据文件和所有输出到屏幕、日志文件以及dump文件中物理量的单位。一般来说,该命令用在输入脚本最开始的位置。

该命令用来定义模拟的维度。默认情况下,LAMMPS运行三维模拟。

该命令用来开启或关闭对势或键相互作用中的第三运动定律。对于大多数问题而言,将牛顿第三定律设置为开启是一种可以节省2倍及以上计算量的做法。具体到是否会更快,则取决于问题的规模、力截断长度、机器的计算/交换比、以及所使用的处理器数量。

x,y,z可取p/s/f/m中的一个字母或两个字母的组合。

设置模拟盒子沿着各个方向的边界条件。单独的一个字母会将模拟盒子沿着某个方向的两个面设置为一样的边界条件。两个字母会将这两个面分别设置为不同的边界条件。

p代表周期性边界条件,就是说原子在跨越模拟盒子的边界时,会从盒子的另外一边再进入盒子里。

定义模拟过程中原子的类型,它会决定原子包括哪些属性。一定原子的类型被设置了,在模拟过程中就不能在改变了,因此尽量更加通用的类型,以免某些属性没有被包括却被用到了。尽量使用更加通用的类型,虽然这可能会因为某些属性没有用到,同时会稍微降低效率,但总比出错好。

一般来说,模拟时需要单独一种的原子类型。但如果模拟中的有些原子不需要某些性质,但其他的原子需要,那么就要使用包含所有这些性质的类型。比如,如果有些原子需要电荷,而另外一些不需要,要使用类型charge;如果有些原子有键,而另外一些没有,要使用类型bond。

定义模拟过程中原子间对相互作用的类型。可以通过pair_coeff命令指定相关的系数。

定义模拟过程中原子间键相互作用的类型。可以通过bond_coeff命令指定相关的系数。

定义模拟过程中原子键间角相互作用的类型。可以通过angle_coeff命令指定相关的系数。

定义一对或多对原子类型的成对力场系数。

定义一对或多对原子类型的成对力场系数。

定义一种或多种角度类型的角度力场系数,取决于角度样式。

该命令用来定义晶格,以便其他命令使用。在LAMMPS中,晶格对应空间中的一些列阵点,这些阵点的位置是由相应原胞中基本原子的位置决定的。这些阵点会在所有的方向上无限的复制。lattice命令的参数可以用来定义很多晶体学晶格。

在LAMMPS,晶格有两种使用方式。第一种,使用命令create_atoms在模拟盒子内的晶格阵点上创建原子。需要注意的是,使用命令create_atoms可以在一个晶格的不同格点上创建不同类型的原子。第二种,晶格沿着x,y,z三个方向的晶格间距可以被其他的命令(比如命令create_box, region, velocity)用作距离单位。

晶格类型必须要与模拟的维度(参考命令dimension)要匹配。类型sc or bcc or fcc or hcp or diamond属于三维问题。类型sq or sq2 or hex属于二维问题。类型custom既可以用于二维,也可以用于三维问题。

对于LAMMPS中一个晶格来说,它是由单胞、一些基本原子和一些在模拟盒子安放单胞的变换参数(比例因子、原点和方位)组成。矢量a1, a2, a3是单胞的边向量。需要注意的是,LAMMPS中使用的单胞是不同于具有最小体积的原胞。

下面这部分介绍将理想单胞变换为模拟盒子中晶格阵点的相关参数。

参数scale决定在模拟盒子中布置单胞时,它的实际尺寸。也就是说,将该参数作为乘法因子作用在单胞上,从而可以获得所需尺寸的晶格。参数scale的意义依赖于在模拟过程中使用的单位类型(参考命令units)。

对于除了lj之外的所有单位类型,参数scale都是由相应单位类型所定义的长度单位指定。举例来说,对于real或metal的单位类型,如果立方单胞的边长为1.0,指定scale=3.52,那么就会创建一个间距3.52A的立方晶格。对于cgs单位类型而言,间距是3.52cm。

origin选项指定在将单胞布置在模拟盒子中的时候,如何对其进行平移。参数x,y,z是分数值(0.0 <= x,y,z <1.0),意思是说按着相应方向上的晶格间距的分数倍进行平移。

orient选项指定在将单胞布置在模拟盒子中的时候,如何对其进行旋转。参数dim是模拟盒子3个坐标轴中的一个。另外3个参数定义一个晶体学方向,你的单胞将会沿着那个方向摆放;需要指定为整数,比如orient x 2 1 0的意思就是说模拟盒子的x方向是沿着晶格的[210]方向。你所指定的三个晶格方向必须是相互正交的,并且满足右手定则,即X叉乘Y的方向与Z相同。需要注意的是,这里的介绍只对正交晶格是适用的。如果你要使用custom类型定义非正交的边矢量a1,a2,a3,那么你可以认为orient选项定义了3x3的旋转矩阵,并将其作用于a1,a2,a3对最初的单胞进行旋转,从而得到新的摆向。

该命令用于定义一个空间几何区域。很多其他命令都会使用该命令定义的区域。举例来说,create_atoms可以在定义区域中创建原子,create_box命令可以根据定义区域定义模拟盒子,group命令可以将定义区域中包括的原子定义为一个组,delete_atoms命令可以将定义区域中的原子删掉,fix wall/region可以将定义区域的表面定义为壁面(boundary wall)。

基于指定的区域创建一个模拟框。首先必须使用 region 命令来定义几何域。

该命令用来在晶格阵点上创建原子,或创建一个单独的原子,或创建一些列随机原子。也可以用命令read_data或read_restart通过直接给出原子坐标的方式创建原子。在使用该命令之前,模拟盒子必须是存在的(使用create_box命令创建),同时晶格也必须已经被定义(使用lattice命令)。但对于创建single类型且以box为单位的原子,或创建random类型的原子时,不需要先定义晶格。

该命令是向已经存在的体系中继续添加原子。换句话说,该命令可以多次使用,从而可以在模拟盒子中创建多组原子。通过交错地使用create_atoms命令和lattice命令(配置为不同晶向orientations),就可以创建晶界;联合使用create_atoms命令和delete_atoms命令,可以创建非常复杂的体系。create_atoms命令也可以在已经读入的体系中继续创建原子。在所有列举的这些情况中,都需要注意不要让新创建的原子与已经存在的原子重叠。可以使用delete_atoms命令来处理重叠原子的问题。

box类型:该命令在整个模拟盒子中所有的晶格阵点上创建原子。如果你的模拟盒子是周期性的,你应该确保其尺寸是晶格距离的整数倍,从而避免在盒子边界处可能存在的原子重叠。如果你的盒子是周期性的,并且在某个方向上盒子的尺寸是晶格距离的整数倍,那么LAMMPS会在边界上只放置一个原子(译注:边界上的原子不会丢失或在两个面同时出现)。

region类型:该命令会在region-ID所指定的区域与模拟盒子相交的公共区域内创建原子。需要注意的是,这里定义的区域可以在模拟盒子内,也可以在模拟盒子外。还需要注意,即便你在这里定义的区域与周期性模拟盒子的尺寸是一样的,LAMMPS所执行的逻辑跟box类型也不一样,就是说并不能像box类型那样确保在边界上只有一个原子。所以如果你希望达成像box类型那样的效果,你最好使用box类型,或者就是非常精确的调整region的尺寸来获得你想要的原子。

single类型:将指定坐标的原子添加到系统中。对于调试或者创建一些列手动添加的原子会比较有用。

random类型:在系统中按着随机坐标产生N各原子,这对于产生无定形系统会比较有用。根据指定的随机种子数seed,程序会依次创建N个随机原子。这N个随机原子的坐标与所使用处理器的个数没有关系。另外,如果region-ID设置为NULL,那么创建的原子会随机填充模拟盒子的任何位置;如果指定了特定的region-ID,那么原子就只会随机填充在模拟盒子与region-ID所共同指定的区域。

注意:使用random类型产生的原子很有可能是相互重叠的,或者是距离较近,不太符合实际物理,从而导致计算出较大的力或能量。因此,在开始进行正常的动力学计算时,最好先使用minimize对体系进行能量最小化,或先使用fix nve/limit进行动力学计算。

为一组原子施加fix约束。在LAMMPS中,fix是施加在分子动力学时间步或能量最小化过程中的某种 *** 作。可能是在时间积分的过程中更新原子的位置和速度,或是控制温度,或是给原子施加约束力,或是强制某种边界条件,或计算过程诊断,等等。

fix命令会在时间步中的不同过程中执行相关的 *** 作。如果有2个或多个fix命令作用于时间步中的同一过程,它们会按着在输入脚本中定义的顺序依次被激活。

fix命令的ID只能包含字母、数字和下划线。

fix命令所施加的约束可以被unfix命令删去。

注意:使用unfix命令是唯一用来关闭fix命令所施加的约束的方法。如果只是指定一种新的类似的fix命令并不会关闭之前的fix命令。这对于进行积分的fix命令特别重要。举例来说,如果你先定义了fix nvt命令,然后又定义了fix nve命令,这样做并不会将先定义的NVT时间积分取消掉,而是这两个时间积分同时进行。

fix_modify命令用来重置fix命令定义的某些设置。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11178737.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存