Sobes.tech
Middle+

რა მახასიათებლები არსებობს მონაცემთა ბაზებში რეპლიკაციის მუშაობისას?

sobes.tech AI

პასუხი AI-სგან

  • კოპირების მეთოდები:
    • Master-Slave: ერთი სერვერი (მასტერი) მართავს ჩანაწერებს, შემდეგ ასინქრონულად ან სინქრონულად გადასცემს ცვლილებებს ერთ ან რამდენიმე სერვერს (სლევებს), რომლებიც მხოლოდ კითხვებს ასრულებენ:
    • Master-Master: რამდენიმე სერვერი მართავს ჩანაწერებს და ურთიერთგადაცემას ახორციელებს ცვლილებებზე:
  • სინქრონულობა:
    • სინქრონული კოპირება: ჩანაწერი დადასტურდება მომხმარებელს მხოლოდ მაშინ, როდესაც იგი წარმატებით არის კოპირებულია ყველა ან მითითებულ რაოდენობაზე:
    • ასინქრონული კოპირება: ჩანაწერი დადასტურდება მომხმარებელს დაუყოვნებლივ მასტერზე დაწერის შემდეგ:
    • ნახევრადსინქრონული კოპირება: კომპრომისი, როდესაც დადასტურება ხდება მასტერზე დაწერის შემდეგ და მინიმუმ ერთ სლევზე:
  • კონფლიქტების გადაჭრა:
    • Master-Master კოპირების ან ქსელის დროებითი განყოფილების დროს შეიძლება წარმოიშვას კონფლიქტები ერთსა და იმავე მონაცემების ერთდროულ ცვლილებაზე:
    • ბოლო დაწერა იგებს (LWW):
    • შერევა: ცვლილებების შერევა:
    • კონფლიქტების გადაჭრის ლოგიკა: სპეციალური ლოგიკა აპლიკაციისთვის:
  • კოპირების დაგვიანება (Lag):
    • დროის სხვაობა მასტერზე დაწერის და მისი გამოჩენის შორის სლევზე:
    • შეიძლება გავლენა იქონიოს მონაცემთა კონსისტენტურობაზე კითხვების დროს სლევებიდან:
  • კოპირების ტიპები ტოპოლოგიები:
    • ჯაჭვი, ვარსკვლავი, რგოლი და სხვა:
    • არჩევანი დამოკიდებულია მასშტაბურობის და ხელმისაწვდომობის მოთხოვნებზე:
  • მონიტორინგი:
    • მუდმივი მონიტორინგი კოპირების მდგომარეობის, დაგვიანების, შეცდომებისა და სერვერების დატვირთვის:
  • გამძლეობა:
    • კოპირება ზრდის მონაცემთა ხელმისაწვდომობას:
    • როდესაც მასტერი ჩავარდება, შესაძლებელია სლევზე გადართვა (failover):
  • მასშტაბირება:
    • კოპირება საშუალებას აძლევს დატვირთვის განაწილებას რამდენიმე სერვერზე:

PostgreSQL-ში სინქრონული კოპირების კონფიგურაციის მაგალითი:

// postgresql.conf
// WAL-ის არქივაცია კოპირებისთვის
wal_level = replica
archive_mode = on
archive_command = 'cp %p /path/to/archive/%f'
// მაქსიმალური გამგზავნი პროცესების რაოდენობა
max_wal_senders = 10
// კოპირების გამგზავნის იდენტიფიკაცია
wal_sender_timeout = 60s

PostgreSQL-ში потокოვანი სლევისთვის კოპირების კონფიგურაციის მაგალითი:

// recovery.conf (ძველი ვერსიები), ან primary_conninfo-ის საშუალებით
// კავშირის კონფიგურაცია მასტერთან
primary_conninfo = 'host=master_ip port=5432 user=replication_user password=replication_password application_name=my_replica'
// WAL-დან აღდგენის დაწყება
restore_command = 'cp /path/to/archive/%f %p'
// მასტერის მოლოდინის რეჟიმი
standby_mode = on

Master-Slave და Master-Master ტიპების შედარებითი ცხრილი:

მახასიათებელი Master-Slave Master-Master
ჩანაწერების დამუშავება მხოლოდ მასტერი ყველა სერვერი
კითხვების დამუშავება მასტერი და სლევები ყველა სერვერი
კონფიგურაციის სირთულე შედარებით მარტივი უფრო რთული
კონფლიქტების გადაჭრა საჭირო არა (მაშინ, როდესაც მასტერი ჩავარდება) საჭირო ლოგიკა ან სტრატეგია
მასშტაბურობა შეზღუდულია მასტერის სიმძლავრით უკეთესად მასშტაბურია
გაუქმების შემთხვევაში ხელმისაწვდომობა კითხვები სლევებიდან, დაწერა მიუწვდომელია დაწერა შესაძლებელია სხვა მასტერებზე