Readme.ge Blog

FB image FB image

Mysql-ის ფედერაციული ცხრილი :)

ავტორი: ალექსანდრე თარიღი: Monday, December 13th, 2010

Mysqlრა შთამბეჭდავი სახელია, Mysql-ის ფედერაციული ცხრილი 🙂

(Mysql Federated Tables)
მისი არსი მოიცავს ძალზედ მარტივს. ჩვენ საშუალება გვეძლება რომელიმე კონკრეტული ცხრილი პარალელურ რეჟიმში  ვამუშაოთ სხვა, მეორე სერვერზე როგორც კოპიო. ანუ თუ ჩვენ რაიმე ქმედით sql-ს გავუშვებთ მთავარ ცხრილზე იგივე ქმედება შესრულდება მასზე მიმაგრებულ მეორე ჰოსტზე არსებულ ცხრილზე (insert, delete, update, truncate).
ვთქვათ გვაქვს mysql-ის 2 ჰოსტი 192.168.1.100 (host1) და  192.168.1.101 (host2),
სადაც მაგალითისთვის  host1-ზე გვაქვს ბაზა testDB1 ცხრილი test_table-ით და testDB2 ბაზა ცხრილით federated_table.
გვაქვს რა… პრინციპში ჯერ  დავიწყოთ 🙂

პირველ რიგში ჩვენთვის ძირითად 192.168.1.101 სერვერზე mysql-ში უნდა გავააქტიუროთ FEDERATED ოფცია.
გავაჩეროთ Mysql-ის პროცესი, გავხსნათ my.cnf ან my.conf ან my.ini(win32 პლატფორმა), ვიპოვოთ

1
skip-federated

და შევცვალოთ

1
federated

-ით.

თუ ვერ ვიპოვეთ იგი შეგვიძლია

1
[mysqld]

-ის შემდეგ გავწეროთ შემდეგნაირად

1
2
[mysqld]
federated

დავსტარტოთ Mysql და გავაგრძელოთ.

პირველ სერვერზე (192.168.1.100) შევქმნათ ცხრილი test_table, რომელიც სტრუქტურულად იდენტური იქნება შემდგომში შექმნილი ძირითადი federated_table-ისა.

1
2
3
4
5
6
7
8
9
-- host1   testDB1
CREATE TABLE test_table (
id     INT(20) NOT NULL AUTO_INCREMENT,
name   VARCHAR(32) NOT NULL DEFAULT '',
other  INT(20) NOT NULL DEFAULT '0',
PRIMARY KEY  (id)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1;

მეორე 192.168.1.101 სერვერზე შევქმნათ ცხრილი, რომელიც იქნება ძირითადი ცხრილი და რომლის კოპიო უნდა მოხდეს პირველ სერვერზე test_table-ში.

1
2
3
4
5
6
7
8
9
10
--host2   testDB2
CREATE TABLE federated_table (
id     INT(20) NOT NULL AUTO_INCREMENT,
name   VARCHAR(32) NOT NULL DEFAULT '',
other  INT(20) NOT NULL DEFAULT '0',
PRIMARY KEY  (id)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://user:pass@remote_host:3306/testDB1/test_table';

აუცილებელია ორივე ცხრილის ძირითადი სტრუქტურა იყოს იდენტური.

შედეგი შეგიძლიათ თავადაც ნახოთ – federated_table-ზე Insert-ისას იგივე ჩანაწერი გაჩნდება test_table-შიც. ზუსტად მსგავს შედეგს მივიღებთ ცხრილიდან ჩანაწერის delete-ს, update-ს და truncate-ს დროსაც.

კონექციის მაგალითები –

1
2
3
CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'

გაითვალისწინეთ, რომ ვინაიდან ცხრილის შექმნისას პაროლი მითითებულია დაუშიფრავად შესაძლოა მისი ნახვა შეძლოს ნებისმიერმა მოხმარებელმა
მაგალითად

1
SHOW CREATE TABLE federated_table

წარმატებულ “ფედერირებას” გისურვებთ 😉

კატეგორიებში: MYSQL. |

9 გამოხმაურება “Mysql-ის ფედერაციული ცხრილი :)”-ზე

  1. Samurai Girl:

    საინტერესოა 🙂
    ისე, მეორე ბაზას თუ პრობლემა შეექმნა, რა ხდება? ან ვთქვათ კავშირია ნელი ხანდახან და ძირითად ცხრილში დიდი რაოდენობის ჩანაწერებს ვსვამთ. ელოდება მანამ მეორე ბაზაში არ ჩაისმება?
    თუ არ აინტერესებს საერთოდ მეორემდე მივა თუ არა ინფორმაცია?

  2. ალექსანდრე:

    @Samurai Girl
    წესით არა, რადგან როგორც ტეტირებისას მახსოვს, საერთოდ არაწარმატებული კონექციისასაც კი არ გიჟდებოდა და.ა.შ. უბრალოდ არ აკეთებდა ჩანაწერებს მეორე ცხრილში და მორჩა.

  3. გიორგი:

    გამარჯობათ,
    დამაინტერედა თქვენ საიტზე (http://www.about.ge/lorem/) ლორემ იპსუმ დოლორ სიტ ამეტ ტექსტის გენერატორის ქართული ვერსია.
    ეს თქვენი შექმნილია?
    როგორ მუშაობს და თუ თუ არის ანალუგიური მზა სკრიპტები?

  4. ალექსანდრე:

    გამარჯობა გიორგი,
    იდეა აღებული არის http://ka.lipsum.com-დან.
    სკრიპტი ჩემი შექმნილია და საკმაოდ მარტივია. პრინციპში დასრულებულიც არ არის…
    ბაზიდან, რომელშიც შეტანილია ქართული სიტყვების მარაგი ალბათობით იღებს გარკვეულ ოდენობას და გვაძლევს როგორც დიდ ტექსტს.
    რთული არ არის. 🙂

  5. გიორგი:

    არის გადმოსაწერად სკრიპტი ამ საიტზე?
    ვნახე ლორემ იპსუმ-ის ფლეშის კლასები http://almiruncommonlib.riaforge.org/

    AS3-სთვის

  6. ალექსანდრე:

    არა სკრიპტი გადმოსაწერად არ დევს.

  7. xokaido:

    MySQL -ის რეპლიკაცია გაცილებთი უკეთესი და გაცილებით საინტერესო რამეა ვიდრე “ფედერირება” ცხრილების… 🙂

  8. ალექსანდრე:

    მაგასაც განვიხილავ როგორც კი ცოტა დრო გამოჩნდება 🙂

  9. გიორგი:

    ფედერაცია კოპირება არ არის ალექს.

დატოვე კომენტარი

...