Mysql主从复制单表或者多表  
数据库安装不过多的介绍了:必须保证2个数据库的版本一致。
 
主数据库:192.168.0.43
从数据库:192.168.0.53
修改43主数据库的配置文件:
打开logbin日志生成文件:
# binary logging - not required for slaves, but recommended
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
server-id=Master_id选nf文项,其中master_id必须为1到232–1之间的一个正整数值。去掉前面的注视符号
server-id       = 1      
重新启动数据库服务。
配置复制:
1.       建立一个专门用于复制的账户允许它远程登陆:
mysql > GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO ' slaveuser'@'192.168.0.53' IDENTIFIED BY 'password';
mysql > FLUSH PRIVILEGES;
2.主服务器上当前的二进制日志名和偏移量值,直接输入命令SHOW MASTER STATUS.
mysql> SHOW MASTER STATUS;
+------------------+-----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000017 | 351051132 |              |                  |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)
 
File列显示日志名,而Position显示偏移量。在该例子中,二进制日志值为mysql-bin.000017偏移量为351051132。记录该值。以后设置从服务器时需要使用这些值。它们表示复制坐标,告诉从服务器应从该点开始从主服务器上进行更新。
取得快照并记录日志名和偏移量后,可以在主服务器上重新启用写活动:

 
上面的操作步骤2你可以不用 采用步骤3的方法 这样可以保证不停止你的主库的时候 数据的偏移量节点都是一致的。
 
 
3.使用mysqldump备份主服务器的数据,将转储文件装载到从服务器:
root@hr43 > mysqldump --master-data -u root -p hrsoft_share 表名 > 表名.sql
 
grep 'mysql-bin' 表名.sql  查询二进制日志名和偏移量值
拷贝 vip_company.sql 文件到从数据上。
修改53从服务器上面的数据库配置文件:
log-bin=mysql-bin #开始bin-log日志
server-id       = 2
master-host     =   192.168.0.43 #主数据库地址
master-user     =   'slaveuser'     #执行登录用户
master-password =   'password' #执行密码
master-port     = 3306              #默认端口
report-host = net-app1              
master-connect-retry = 30    # 如果从服务器发现主服务器断掉重新连接时间30S
log-bin
expire_logs_days = 3   #保留3天的日志文件
log-slave-updates
replicate-do-table=hrsoft_share.表名# 只复制表名
如果要是复制多个表只要在下面直接添加(复制几个就添加几个)
replicate-do-table=hrsoft_share.表名
 
 
配置完成后重启数据库服务
还原表vip_company
hr53 ~]# mysql -u root -p -Dhrsoft_share < /root/表名.sql
 
进入从库 mysql –uroot –p
 
mysql> change master to master_host='192.168.0.43', master_user='slaveuser', master_password='password', master_log_file='mysql-bin.000017', master_log_pos=351051132;
mysql> START SLAVE;
 
在从上面查看复制状态
mysql> show slave status\G;
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.43
                  Master_User: slaveuser
                  Master_Port: 3306
                Connect_Retry: 30
              Master_Log_File: mysql-bin.000017
          Read_Master_Log_Pos: 350599261
               Relay_Log_File: hr53-relay-bin.000044
                Relay_Log_Pos: 350599406
        Relay_Master_Log_File: mysql-bin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table: hrsoft_share.表名
       Replicate_Ignore_Table:
   红色标示显示出从服务器的两个线程已经启动.
 
在主服务器上做一个update的语句,从服务器立刻就会同步更新.配置完成.

 

 
上面的操作只是复制单个表 只要你要同步的主库表 没有写入数据是肯定可以成功的数据是没有差距的你也可以停止你的主库(条件可以得话)或者锁表防止数据写入造成不必要的麻烦,

 
在有就是你想要同步多个表的时候 可以通过下面的步骤完成 前提是 你的主从状态是ok的
停止从库53

停止主库43

拷贝物理文件

cd /usr/local/mysql/var/hrsoft_share
scp -P65009 表的物理文件 root@192.168.0.53:/usr/local/mysql/var/hrsoft_share/

在从服务器上面
cd /usr/local/mysql/var/hrsoft_share
chown mysql.mysql *

在43上面启动主库

修改53上面 数据库配置文件
replicate-do-table=hrsoft_share.表名
replicate-do-table=hrsoft_share.表名
replicate-do-table=hrsoft_share.表名
replicate-do-table=hrsoft_share.表名
启动从库

查看数据同步状态
上面只是我自己测试操作在服务器上面也测试成功。
也有的在配置文件里面这个写的 
 
 #replicate-do-table=hrsoft_share.表名,表名,表名但是我的就不成功 也许是数据的版本不可以把 以后有时间在研究研究。